2017-07-20 127 views
0

我無法在任何地方找到這個確切的答案,抱歉,如果它已被回答。如何在關閉form2後選擇我的form1文本框?

textbox.select和textbox.focus在form1_load下效果很好,但是我有一個鏈接標籤,它打開了form2,但是用我的取消按鈕或退出按鈕關閉form2顯然不會再選擇或重新放置form1中的文本框。

更新以顯示初始化窗體2(表單爲例)

private void CreateNew_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
{ 
    var popup = new FormPopup(); 
    popup.ShowDialog(); 
} 
+2

你有什麼試過的?請添加您的代碼 – Grady

+2

請分享一些代碼以便引導其他人 – Mahdi

+0

如何顯示錶單?用'Show()'或'ShowDialog()'?添加代碼的第二部分,打開問題的第二種形式。 –

回答

2

這可能不是最好的答案事件的代碼示例,但如果你初始化窗體2(我假設您選擇做這樣的事情Form2 frm2 = new Form2(); ),然後我會在該行下,使用frm2.FormClosed += frm2_FormClosed;將FormClosed事件掛接到該表單。現在你有一個方法可以檢測form2從form1關閉的時間,在這種方法中,你可以設置文本框的焦點。

代碼示例:

private void InitForm2() 
{ 
    Form2 frm2 = new Form2(); 
    frm2.FormClosed += Form2_FormClosed; 
    frm2.Show(); 
} 

private void Form2_FormClosed(object sender, EventArgs e) 
{ 
    textbox1.Focus(); 
} 

編輯:@Ofir Winegarten指出的那樣,如果你使用的ShowDialog的,而不是秀,你可以只設置textbox1.Focus()呼叫後立即,因爲它不會執行,直到窗口2被關閉。

代碼示例:以上

private void InitForm2() 
{ 
    Form2 frm2 = new Form2(); 
    frm2.ShowDialog(); 

    textbox1.Focus(); //Will not happen until after form2 is closed. 
} 
+3

如果您使用'ShowDialog',您爲什麼需要該事件?爲什麼不把重點放在行後? –

+0

是的,公平點,你可以做到這一點。 TBH我忘了表單有一個Show和ShowDialog選項,自從我和他們一起工作了一段時間。我會編輯我的答案。 –

0

大家幫助這個答案感謝傢伙。我需要的只是添加myTextBox.Focus();在我初始化Form2的單擊事件之後。任何人想知道這是因爲ShowDialog()後面寫的任何東西;直到Form2關閉後纔會執行。

private void CreateNew_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
    { 
     FormPopup popup = new FormPopup(); 
     popup.ShowDialog(); 

     NameBox.Focus(); 

    } 
相關問題