关闭另一个表单时如何在文本框上设置焦点?

时间:2014-03-20 08:43:23

标签: c# windows-forms-designer

我有两种形式,Form1和Form2。从Form1中的按钮打开Form2。我想要的是当我从窗口右上角的X(十字)按钮关闭Form2时,焦点设置为Form1的textbox1。关于这个的任何帮助??

6 个答案:

答案 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)

如果直接从一个父表单打开,则可以使用其他表单加载事件,如果要更改聚焦文本框,则可以使用父表单的用例。