我正试图解决这个问题很长一段时间。 我有两种形式,我的目标是:
我用a_Resize方法解决的前两件事。但我不能做第三个。我尝试使用activate事件,但是当我这样做时,form2会被阻止。 这是我的代码:
public partial class Form1 : Form
{
Form2 form2;
public Form1()
{
InitializeComponent();
form2 = new Form2();
form2.Show();
form2.Resize += new EventHandler(a_Resize);
}
void a_Resize(object sender, EventArgs e)
{
if (((Form)sender).WindowState == FormWindowState.Minimized)
{
this.WindowState = FormWindowState.Minimized;
}
else
{
this.WindowState = FormWindowState.Normal;
}
}
}
如果我向form2 activate事件添加处理程序:
form2.Activated += new EventHandler(form2_Activated);
并调用例如Focus方法(我也尝试了其他方法),form2在form1后面被阻止。
void form2_Activated(object sender, EventArgs e)
{
this.Focus();
}
有人有任何想法我怎么能这样做?
答案 0 :(得分:4)
创建form2
时,只需将this
作为参数传递给Show()
,即表示form1
是所有者。使用所有者链接,表单将始终一起提升(至少根据我的经验 - 我没有规范支持我)。
public Form1()
{
InitializeComponent();
form2 = new Form2();
form2.Show(this); //pass 'this' as argument to Show() to link them
form2.Resize += new EventHandler(a_Resize);
}