如何强制表单焦点
本文关键字:焦点 表单 何强制 | 更新日期: 2023-09-27 18:17:23
如何强制窗体焦点?.Focus()
不适合我。
private void button1_Click(object sender, EventArgs e) {
var form = new loginForm();
if (Application.OpenForms[form.Name] == null) {
form.Show();
} else {
form.Focus();
}
}
我做错了什么?
试试这个:
this.BringToFront();
this.Activate();
您需要首先显示表单-使用Show()
方法:
var form = new loginForm();
form.Show();
Edit:(更新的问题)
对于调用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;
}
应该是
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();
}
}
前面的答案都不适合我,但这个可以:
protected override void OnShown(EventArgs e)
{
Focus();
}
在此事件之前调用的聚焦方法都不起作用。
在表单的开头添加
this.BringToFront ();this.Activate ();