关闭form2后如何选​​择我的form1文本框?

时间:2017-07-20 18:39:12

标签: c# winforms

我无法在任何地方找到这个确切的答案,对不起,如果已经回答了。

textbox.select和textbox.focus在form1_load下工作得很好但是我有一个打开form2的linklabel,但是使用我的取消按钮或退出按钮关闭form2显然不会再次选择或将文本框聚焦在form1中。

更新以显示初始化Form2(FormPopup)

的事件的代码示例
private void CreateNew_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    var popup = new FormPopup();
    popup.ShowDialog();
}

2 个答案:

答案 0 :(得分:2)

这可能不是最佳答案,但是在初始化表单2的地方(我假设您正在执行Form2 frm2 = new Form2();之类的操作),我会在该行下,使用FormClosed事件将该事件挂接到该表单frm2.FormClosed += frm2_FormClosed;。现在你有一个方法可以检测form2何时从你的form1关闭,在这个方法中,你可以设置文本框的焦点。

代码示例:

private void InitForm2()
{
    Form2 frm2 = new Form2();
    frm2.FormClosed += Form2_FormClosed;
    frm2.Show();
}

private void Form2_FormClosed(object sender, EventArgs e)
{
    textbox1.Focus();
}

编辑:正如@Ofir Winegarten所指出的,如果您使用ShowDialog而不是Show,您可以在此之后立即设置textbox1.Focus()调用,因为在关闭form2之前它不会执行。

代码示例:

private void InitForm2()
{
    Form2 frm2 = new Form2();
    frm2.ShowDialog();

    textbox1.Focus(); //Will not happen until after form2 is closed.
}

答案 1 :(得分:0)

上面的每个人都帮助了这个答案谢谢你们。我只需要添加myTextBox.Focus();在我初始化Form2的click事件之后。对于任何想知道它的人是因为在ShowDialog()之后写的任何东西;在Form2关闭之后才会执行。

    private void CreateNew_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        FormPopup popup = new FormPopup();
        popup.ShowDialog();

        NameBox.Focus();

    }