2017-07-20 99 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(); 

    } 
相关问题