如何在关闭另一个窗体时将焦点设置在文本框上

本文关键字:设置 焦点 文本 窗体 另一个 | 更新日期: 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

您可以像这样手动为form2Close事件分配一个事件处理程序:

form2 = new Form2();
form2.Closed += Form2Closed;
form2.Show();
public void Form2Closed(object sender, FormClosedEventArgs e)
{
    textBox2.Focus();
}

请注意,这适用于您的情况,因为您没有显示form2ShowDialog !

同样,如果表单以其他方式关闭(例如表单上的按钮),也可以设置焦点。如果您真的只想在单击窗口的关闭框时聚焦文本框,则需要做更多的操作。

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

希望这有助于您....

如果直接从父窗体打开另一个窗体加载事件,则可以使用它;如果想要更改焦点文本框,则可以使用父窗体加载事件。