我在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();
}
}
但形式没有集中。谁可以指出我的错误?提前谢谢。
答案 0 :(得分:0)
您可以像这样简化:
public Form1(Form parent)
{
InitializeComponent();
_parent = parent;
}
private void button1_Click(object sender, EventArgs e)
{
if (_parent != null)
_parent.Focus();
}
我希望它能回答你的问题。否则请发表评论。
修改强>
Show()
和BringToFront()
都在内部使用SafeNativeMethods.ShowWindow(...)
。所以你不会注意到任何差异。但是,我认为在Show()
个对象上使用Activate()
或Form
,在BringToFront()
个对象上Control
使用Control
更为常见1}}对象。
答案 1 :(得分:0)
如果您绝对希望用户在能够再次使用Form1之前在Form2中执行操作,请使用.ShowDialog()而不是.Show()