【问题标题】:Focus textbox on main form after closing a second form关闭第二个表单后将文本框聚焦在主表单上
【发布时间】:2012-08-03 02:58:53
【问题描述】:

关闭通过调用ShowDialog() 打开的第二个表单后,如何将TextBox 元素集中在主表单上?

我尝试在第二个表单的关闭和关闭事件中调用MainForm.TextBox.Focus(),但这不会聚焦文本框。

我在紧凑框架上使用System.Windows.Forms

谢谢。

【问题讨论】:

    标签: c# winforms textbox focus


    【解决方案1】:

    在您的第二个表单中,通过进入“属性”使按钮(或其他控件)返回 DialogResult。当您希望关闭第二个表单时(即按下按钮后),使其返回特定的DialogResult。在您的主表单中,您可以这样做:

    if(secondform.ShowDialog() == DialogResult.OK)
    {
        textBox.Focus();
        ...
    }
    

    调用ShowDialog() 会一直阻塞,直到它关闭,所以你可以这样做:

    secondform.ShowDialog();
    textbox.Focus()
    

    但是,第一个示例适用于您只想在按下某个按钮或在第二个表单上执行操作后使文本框具有焦点的情况。

    【讨论】:

    • 感谢这项工作。我不能投票给你,因为我需要 15 个代表。我可以在 5 分钟内接受答案。
    【解决方案2】:

    ShowDialog 的意思是,它是一个模态窗口,焦点不会回到主窗体,直到您关闭第二个窗体。您可以在打开第二个表单时使用的相同代码中重新设置焦点。

    SecondFrm.ShowDialog();
    Textbox.Focus();
    

    【讨论】:

      【解决方案3】:

      ShowDialog() 只会在第二个窗体关闭时返回,所以你可以在调用后立即写MyTextBox.Select()

      【讨论】:

        【解决方案4】:
        SomeForm form1 = new SomeForm();
        form1.ShowDialog();
        

        在这里您正在显示新表单。 当你关闭它时,你会执行之后的方法,所以添加

        yourTextbox.Focus();
        

        所以,它:

        SomeForm form1 = new SomeForm();
        form1.ShowDialog(); // do what you want in your form, then close it
        yourTextbox.Focus();
        

        【讨论】:

        • SomeForm.ShowDialog() 应改为form1.ShowDialog()
        猜你喜欢
        • 1970-01-01
        • 2015-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-03
        • 1970-01-01
        • 2021-01-23
        相关资源
        最近更新 更多