【问题标题】:How to force the form focus?如何强制表单焦点?
【发布时间】:2012-01-17 15:52:13
【问题描述】:

如何强制获得表单的焦点? .Focus() 不适合我。

private void button1_Click(object sender, EventArgs e) {
   var form = new loginForm();
    if (Application.OpenForms[form.Name] == null) {
           form.Show();
    } else {
         form.Focus();
    }
}

我做错了什么?

【问题讨论】:

    标签: c# .net winforms focus


    【解决方案1】:

    您需要先显示表单 - 使用Show() 方法:

    var form = new loginForm();
    form.Show();
    

    编辑:(更新问题)

    对于调用Activate() 的现有表单可能更合适,这也将表单置于最前面:

    private void button1_Click(object sender, EventArgs e) 
    {
       var form = new loginForm();
        if (Application.OpenForms[form.Name] == null) 
        {
               form.Show();
        } 
        else 
        {
            Application.OpenForms[form.Name].Activate();
        }
    }
    

    如果表单被最小化,您需要订阅Activated 事件来将您的窗口状态更改为FormWindowState.Normal

    private void loginForm_Activated(object sender, EventArgs e)
    {
        this.WindowState = FormWindowState.Normal;
    }
    

    【讨论】:

      【解决方案2】:

      试试这个:

      this.BringToFront();
      this.Activate();
      

      【讨论】:

        【解决方案3】:

        应该是

        private void button1_Click(object sender, EventArgs e) {
           var form = new loginForm();
            if (Application.OpenForms[form.Name] == null) {
                   form.Show();
            } else {
                 Application.OpenForms[form.Name].Focus();
            }
        }
        

        【讨论】:

        • 不适合我。如果表单被最小化并且我点击了 button1 表单没有被激活(放在焦点上)。
        • 抱歉,您看到编辑了吗?你尝试了哪一个?选择()或焦点()?
        • 现在工作正常。谢谢!但出于好奇,为什么引用 form 变量不起作用?
        • 因为它是不同的实例,而不是目前最小化的实例。你明白其中的区别吗?
        • 您正在创建一个新表单并尝试将其聚焦,而不是尝试聚焦现有表单
        【解决方案4】:

        以前的答案都对我有用,但这确实有效:

        protected override void OnShown(EventArgs e)
        {
            Focus();
        }
        

        如果在此事件之前调用,所有聚焦方法都不起作用。希望对您有所帮助。

        【讨论】:

          【解决方案5】:

          在我们添加的表单开始时
          this.BringToFront(); this.Activate();

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-10-29
            • 1970-01-01
            • 1970-01-01
            • 2017-06-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多