C# 关闭form2后如何选择form1的文本框?

C# 关闭form2后如何选择form1的文本框?,c#,winforms,C#,Winforms,我在任何地方都找不到这个确切的答案,很抱歉,如果它已经被回答了 textbox.select和textbox.focus在form1_load下工作得很好,但是我有一个链接标签可以打开form2,但是用我的取消按钮或退出按钮关闭form2显然不会再次选择或聚焦form1中的文本框 已更新以显示初始化Form2FormPopup的事件的代码示例 private void CreateNew_LinkClicked(object sender, LinkLabelLinkClickedEventAr

我在任何地方都找不到这个确切的答案,很抱歉,如果它已经被回答了

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

已更新以显示初始化Form2FormPopup的事件的代码示例

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

这可能不是最好的答案,但在初始化表单2时,我假设您正在执行类似于Form2 frm2=new Form2;,然后在该行下,使用frm2.FormClosed+=frm2_FormClosed;将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();
}
private void InitForm2()
{
    Form2 frm2 = new Form2();
    frm2.ShowDialog();

    textbox1.Focus(); //Will not happen until after form2 is closed.
}
编辑:正如@Ofir Winegarten所指出的,如果您使用ShowDialog而不是Show,您可以立即设置textbox1.Focus调用,因为它在form2关闭之前不会执行

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

        NameBox.Focus();

    }
代码示例:

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

private void Form2_FormClosed(object sender, EventArgs e)
{
    textbox1.Focus();
}
private void InitForm2()
{
    Form2 frm2 = new Form2();
    frm2.ShowDialog();

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

上面的每个人都给出了这个答案,谢谢大家。我所需要的只是添加我的文本框;在初始化Form2的单击事件之后。对于任何想知道这是因为在ShowDialog之后写的东西;直到Form2关闭后才会执行

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

        NameBox.Focus();

    }

你试过什么?添加您的代码请共享一些代码以指导其他人显示您是否显示表单?使用Show还是ShowDialog?将打开第二个表单的代码部分添加到问题中。如果使用ShowDialog,为什么需要该事件?为什么不把焦点放在后面?是的,公平点,你可以这样做。TBH我忘了表单有一个Show和ShowDialog选项,我已经有一段时间没有使用它们了。我将编辑我的答案。