如何强制表格的焦点? .Focus()
对我不起作用。
private void button1_Click(object sender, EventArgs e) {
var form = new loginForm();
if (Application.OpenForms[form.Name] == null) {
form.Show();
} else {
form.Focus();
}
}
我做错了什么?
答案 0 :(得分: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;
}
答案 1 :(得分:10)
试试这个:
this.BringToFront();
this.Activate();
答案 2 :(得分: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();
}
}
答案 3 :(得分:0)
在表格的开头,我们添加
this.BringToFront();
this.Activate();
答案 4 :(得分:0)
以前的答案都没有对我有用,但确实如此:
protected override void OnShown(EventArgs e)
{
Focus();
}
如果在此事件之前被调用,则所有聚焦方法都无效。希望对您有所帮助。