【问题标题】:How to force a focus on a control in windows forms如何强制将焦点集中在 Windows 窗体中的控件上
【发布时间】:2013-05-31 00:33:36
【问题描述】:

我试图在我的 Windows 窗体应用程序中集中一个“搜索”文本框控件。此文本框位于用户控件内,该控件位于窗口窗体内的面板内(如果它很重要)。 我尝试了 3 种我能找到的方法:

// 1
this.ActiveControl = myTextBox;

// 2
myTextBox.Focus();

// 3
myTextBox.Select();

它们似乎都不起作用。我的意思是,例如,当我尝试第一个时,活动控件确实设置为 myTextBox,但是当我尝试在键盘上写东西时,文本框不接受它,我必须先在文本框内单击才能获得焦点。这与所有方法相同。 我错过了什么吗?

【问题讨论】:

    标签: c# .net winforms focus


    【解决方案1】:

    好的,终于找到答案了:

    正如我所说,我的文本框在用户控件内部,在表单内部的面板内部。 当我需要我的用户控件时,我将其添加到面板中。要专注于我的文本框,我必须首先关注我的用户控件,如下所示: 在我的顶级表单中:

    panel.Controls.Add(myUserControl);
    myUserControl.Focus();
    

    然后在我的用户控件中:

    myTextBox.Select();
    

    请注意,如果我使用: myTextBox.Focus() 它将不起作用(不知道为什么)。此外,如果我使用 myUserControl.Select() 而不是 myUserControl.Focus() 它也不起作用。

    这似乎是唯一有效的组合。

    【讨论】:

      【解决方案2】:

      您可以执行以下逻辑步骤将控件设置为焦点:

      your_control.Select();
      your_control.Focus();
      

      享受吧! :)

      【讨论】:

        猜你喜欢
        • 2011-03-14
        • 2011-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多