关闭第二个表单后,在主窗体上关注文本框

时间:2012-08-03 02:58:53

标签: c# winforms textbox focus

关闭通过调用TextBox打开的第二个表单后,如何将ShowDialog()元素集中在主表单上?

我试图在第二个表单的结束和关闭事件中调用MainForm.TextBox.Focus(),但这不会关注文本框。

我在紧凑框架上使用System.Windows.Forms

感谢。

4 个答案:

答案 0 :(得分:3)

从第二个表单中,通过进入“属性”,使按钮(或其他控件)返回DialogResult。如果要关闭第二个表单(即按下按钮后),则返回特定的DialogResult。在您的主表单中,您可以执行此操作:

if(secondform.ShowDialog() == DialogResult.OK)
{
    textBox.Focus();
    ...
}

调用ShowDialog()将一直阻止,直到关闭为止,您只需执行以下操作:

secondform.ShowDialog();
textbox.Focus()

然而,第一个例子是当您只想按下某个按钮或在第二个表单上执行某个操作后,您只想使文本框具有焦点。

答案 1 :(得分:3)

ShowDialog表示,它是一个模态窗口,在关闭第二个表单之前,焦点不会返回到主窗体。您可以将焦点设置回用于打开第二个表单的相同代码。

SecondFrm.ShowDialog();
Textbox.Focus();

答案 2 :(得分:0)

ShowDialog()仅在第二个表单关闭时返回,因此您可以在通话结束后立即写MyTextBox.Select()

答案 3 :(得分:0)

SomeForm form1 = new SomeForm();
form1.ShowDialog();

这里显示新表单。 当你关闭它时,你将在那之后执行方法,所以添加

yourTextbox.Focus();

所以,它的:

SomeForm form1 = new SomeForm();
form1.ShowDialog(); // do what you want in your form, then close it
yourTextbox.Focus();