我有一个问题:
以下是我的案例:
我已经命令每次用户选择时调用NewForm。当我运行程序时调用MainForm,当我单击“NewForm”时,调用FirstNewForm并关闭MainForm。但是,当我在我创建的FirstNewForm中再次单击“NewForm”时,它调用了SecondNewForm,但是FirstNewForm没有被关闭。
这是我的问题:
如何关闭FirstNewForm?我的意思是,每当我调用NewForm时如何关闭CurrentForm?
当主菜单仍在那里时,我命令一个“NewForm”的图像,当调用FirstNewForm时关闭MainForm :(如果你在任务栏中看到,那里只有一个销售系统程序):(第一个)图像是MainForm,第二个图像是FirstNewForm,它看起来一样,因为当我调用FirstNewForm时MainForm已经关闭了:
这是当FirstNewForm仍在那里时命令“NewForm”的图像,并且在调用SecondNewForm时没有关闭FirstNewForm :(如果你在任务栏中看到,那里有两个销售系统程序,所以FirstNewForm没有关闭)
如何隐藏和关闭FirstNewForm?
以下是代码:
private void AddNewForm(object sender, EventArgs e)
{
//this.Hide();
Form newForm = new Form();
AddObjects(sender, e, newForm);
UpdateTextPosition(sender, e, newForm);
newForm.Size = new Size(1360, 735);
newForm.Text = "Selling System";
newForm.FormBorderStyle = FormBorderStyle.Fixed3D;
newForm.AutoScaleMode = AutoScaleMode.Font;
newForm.AutoScroll = true;
newForm.AutoSizeMode = AutoSizeMode.GrowAndShrink;
newForm.StartPosition = FormStartPosition.CenterScreen;
newForm.MaximizeBox = false;
newForm.Controls.Add(label1);
newForm.Controls.Add(label2);
newForm.Controls.Add(label3);
newForm.Controls.Add(label4);
newForm.Controls.Add(label5);
newForm.Controls.Add(label6);
newForm.Controls.Add(label7);
newForm.Controls.Add(menuStrip1);
//newForm.ShowDialog();
//this.Close();
if(this.InvokeRequired)
{
Action act = () =>
{
this.Hide();
};
this.Invoke(act);
}
else
{
this.Hide();
}
}
提前致谢!对不起,如果我发帖长篇
答案 0 :(得分:1)
ShowDialog
会显示模式对话框。这意味着,只有在您关闭新表单后,才会阻止newForm.ShowDialog()
来阻止this.Close()
。您可以在主窗体上调用this.Hide()
使其不可见,并在退出程序时将所有窗体关闭:
this.Hide();
newForm.ShowDialog();
this.Close();
修改强>
可能看起来您对this.Hide()
的调用未正确分派到UI线程,因此它拒绝隐藏表单。尝试
if(this.InvokeRequired){
Action act = () => {
this.Hide();
}
this.Invoke(act)
}
else{
this.Hide();
}
'NOTHER EDIT
private void AddNewForm(object sender, EventArgs e)
{
...
if(this.InvokeRequired)
{
Action act = () =>
{
this.Hide();
};
this.Invoke(act);
}
else
{
this.Hide();
}
newForm.ShowDialog();
}
答案 1 :(得分:0)
在主窗体上您必须为两个子窗体都分配事件处理程序OnFormClosed。 在那里你可以做出正确的反应并控制每个孩子的形式行为。