如何强制关注子窗体
本文关键字:窗体 何强制 | 更新日期: 2023-09-27 18:18:50
我需要关注一个表单。
I tried in Form2:
//...
var form3 = new Form3(this);
if (System.Windows.Forms.Application.OpenForms[form3.Name] == null)
{
form3.Show();
}
else
{
System.Windows.Forms.Application.OpenForms[form3.Name].Focus();
}
然后在Form3:
public partial class Form3 : Form
{
public Form2 _emailForm;
public Form3 (Form2 emailForm)
{
_emailForm = emailForm;
InitializeComponent();
}
public void foo()
{
_emailForm.ForceFocus();
this.Close();
}
}
但是表单永远不会聚焦。有人能指出我做错了什么吗?
可以这样简化:
public Form1(Form parent)
{
InitializeComponent();
_parent = parent;
}
private void button1_Click(object sender, EventArgs e)
{
if (_parent != null)
_parent.Focus();
}
我希望它能回答你的问题。否则请留下评论。
编辑
Show()
和BringToFront()
都在内部使用SafeNativeMethods.ShowWindow(...)
。所以你不会注意到任何不同。然而,我认为Form
对象上使用Show()
或Activate()
, Control
对象上使用BringToFront()
更常见,它们是其他Control
对象的一部分。
如果你绝对希望用户在使用Form1之前先在Form2中执行操作,请使用。showdialog()而不是。show ()