我有两种形式,Form1和Form2。从Form1中的按钮打开Form2。我想要的是当我从窗口右上角的X(十字)按钮关闭Form2时,焦点设置为Form1的textbox1。关于这个的任何帮助??
答案 0 :(得分:2)
试试这个
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.Show();
f.FormClosed += f_FormClosed;
}
void f_FormClosed(object sender, FormClosedEventArgs e)
{
textBox1.Focus();
}
答案 1 :(得分:1)
将此代码写入form1
button click
事件:
form2 fm2 = new form2();
fm2.ShowDialog(); //to show as child form of Form1
textbox.Focus(); //as Form2 closes it will focus to your textbox now
答案 2 :(得分:1)
您可以手动为form2
Close
事件分配事件处理程序,如下所示:
form2 = new Form2();
form2.Closed += Form2Closed;
form2.Show();
public void Form2Closed(object sender, FormClosedEventArgs e)
{
textBox2.Focus();
}
请注意,这适用于您的情况,因为您未form2
显示ShowDialog
!
此外,如果表单也以其他方式关闭,例如表单上的按钮,则设置焦点。如果您真的只想在单击窗口的关闭框时关注文本框,则需要多做一些。
public void Form2Closed(object sender, FormClosedEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
Form2 f2 = sender as Form2;
if (!f2.ClosedByUserElement)
textBox2.Focus();
}
}
另外,在Form2
中,您需要一个ClosedByUserElement
属性,通常为false
,但只要用户通过红色{以外的其他方式关闭表单,就设置为true
{1}},例如按钮:
X
通过这种方式,您可以使用窗口的关闭框(private void button1_Click(object sender, EventArgs e)
{
ClosedByUserElement = true;
Close();
}
为ClosedByUserElement
)或手动调用false
来决定用户是否关闭了窗口,单击按钮时的示例(Close
将为ClosedByUserElement
)。
答案 3 :(得分:0)
如果Form2
是使用ShowDialog()
方法打开的模式表单,则只需在表单打开后的Form1按钮Click事件中添加此代码:
this.textbox1.Focus();
答案 4 :(得分:0)
将此代码写入Form1的按钮单击事件,按钮打开第二个表单
Form2 frm2 = new Form2();
frm2.ShowDialog(); // do what you want in your form, then close it
yourTextbox.Focus();
yourTextbox.BackColor = Color.LightYellow; // instead of LightYellow Write whatever colour you want
希望这有助于你......
答案 5 :(得分:-1)
如果直接从一个父表单打开,则可以使用其他表单加载事件,如果要更改聚焦文本框,则可以使用父表单的用例。