如何强制表格焦点?

问题描述 投票:10回答:4

我如何强制表格的焦点? .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
4个回答
8
投票

它应该是

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();
    }
}

15
投票

您需要先显示表单 - 使用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;
}

10
投票

试试这个:

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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.