【发布时间】:2012-08-03 02:58:53
【问题描述】:
关闭通过调用ShowDialog() 打开的第二个表单后,如何将TextBox 元素集中在主表单上?
我尝试在第二个表单的关闭和关闭事件中调用MainForm.TextBox.Focus(),但这不会聚焦文本框。
我在紧凑框架上使用System.Windows.Forms。
谢谢。
【问题讨论】:
关闭通过调用ShowDialog() 打开的第二个表单后,如何将TextBox 元素集中在主表单上?
我尝试在第二个表单的关闭和关闭事件中调用MainForm.TextBox.Focus(),但这不会聚焦文本框。
我在紧凑框架上使用System.Windows.Forms。
谢谢。
【问题讨论】:
在您的第二个表单中,通过进入“属性”使按钮(或其他控件)返回 DialogResult。当您希望关闭第二个表单时(即按下按钮后),使其返回特定的DialogResult。在您的主表单中,您可以这样做:
if(secondform.ShowDialog() == DialogResult.OK)
{
textBox.Focus();
...
}
调用ShowDialog() 会一直阻塞,直到它关闭,所以你可以这样做:
secondform.ShowDialog();
textbox.Focus()
但是,第一个示例适用于您只想在按下某个按钮或在第二个表单上执行操作后使文本框具有焦点的情况。
【讨论】:
ShowDialog 的意思是,它是一个模态窗口,焦点不会回到主窗体,直到您关闭第二个窗体。您可以在打开第二个表单时使用的相同代码中重新设置焦点。
SecondFrm.ShowDialog();
Textbox.Focus();
【讨论】:
ShowDialog() 只会在第二个窗体关闭时返回,所以你可以在调用后立即写MyTextBox.Select()。
【讨论】:
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();
【讨论】:
SomeForm.ShowDialog() 应改为form1.ShowDialog()。