我如何强制表格的焦点? .Focus()
不适合我。
private void button1_Click(object sender, EventArgs e) {
var form = new loginForm();
if (Application.OpenForms[form.Name] == null) {
form.Show();
} else {
form.Focus();
}
}
我究竟做错了什么?
它应该是
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();
}
}
您需要先显示表单 - 使用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;
}
试试这个:
this.BringToFront();
this.Activate();
在表单的开头我们添加 this.BringToFront(); this.Activate();