如何在关闭另一个窗体时将焦点设置在文本框上
本文关键字:设置 焦点 文本 窗体 另一个 | 更新日期: 2023-09-27 17:51:11
我有两个表单,Form1和Form2。通过位于Form1中的按钮打开Form2。我想要的是,当我从窗口右上角的X(交叉)按钮关闭Form2时,焦点被设置为Form1的textbox1。对此有什么帮助吗?
试试这个
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();
}
在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
您可以像这样手动为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
,而不是红色的X
,例如一个按钮:
private void button1_Click(object sender, EventArgs e)
{
ClosedByUserElement = true;
Close();
}
这样你就可以决定用户是使用窗口的关闭框关闭窗口(ClosedByUserElement
将是false
)还是通过手动调用Close
,例如当单击按钮时(ClosedByUserElement
将是true
)。
如果Form2
是使用ShowDialog()
方法打开的模态表单,您可以简单地在Form1按钮单击事件中添加以下代码,在表单打开后:this.textbox1.Focus();
在Form1的Button Click事件中编写此代码,通过该按钮打开第二个表单
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
希望这有助于您....
如果直接从父窗体打开另一个窗体加载事件,则可以使用它;如果想要更改焦点文本框,则可以使用父窗体加载事件。