如何强制表格焦点?

Jac*_*ack 10 .net c# focus winforms

我如何强制表格的焦点?.Focus()不适合我.

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

我究竟做错了什么?

Bro*_*ass 15

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

var form = new loginForm();
form.Show();
Run Code Online (Sandbox Code Playgroud)

编辑:(更新的问题)

对于现有的表单调用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();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果表单已最小化,您需要订阅该Activated事件以将窗口状态更改为FormWindowState.Normal:

private void loginForm_Activated(object sender, EventArgs e)
{
    this.WindowState = FormWindowState.Normal;
}
Run Code Online (Sandbox Code Playgroud)


小智 12

试试这个:

this.BringToFront();
this.Activate();
Run Code Online (Sandbox Code Playgroud)


Seb*_*Piu 9

它应该是

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 您正在创建一个新表单并尝试将其聚焦,而不是尝试聚焦现有表单 (2认同)