我做了什么:
我有3个Forms
,其中Form_1
中有一个面板和2个按钮(button_1
,button_2
)。
button_1
单击事件在面板中添加Form_2
。 (在清除Panel
控件之前)
button_2
单击事件在面板中添加Form_3
。 (在清除Panel
控件之前)
我要寻找的东西:
在Form_2
和Form_3
中,我有Form.closing()
和Form.Leave()
事件,但没有调用此函数。
我已经在Form_2
中打开了串行端口,但无法正常关闭。
这是我的代码:
public partial class Form_1 : Form
{
public Form_1()
{
InitializeComponent();
}
private void button_1_Click(object sender, EventArgs e)
{
Form_2 ObjForm_2 = new Form_2();
panelBody.Controls.Clear();
panelBody.Refresh();
if (ObjForm_2.IsDisposed)
{
ObjForm_2 = new Form_2();
}
ObjForm_2.TopLevel = false;
ObjForm_2.FormBorderStyle = FormBorderStyle.None;
ObjForm_2.Dock = DockStyle.Fill;
panelBody.Controls.Add(ObjForm_2);
ObjForm_2.Show();
}
private void button_1_Click(object sender, EventArgs e)
{
Form_3 ObjForm_3 = new Form_3();
panelBody.Controls.Clear();
panelBody.Refresh();
if (ObjForm_3.IsDisposed)
{
ObjForm_3 = new Form_3();
}
ObjForm_3.TopLevel = false;
ObjForm_3.FormBorderStyle = FormBorderStyle.None;
ObjForm_3.Dock = DockStyle.Fill;
panelBody.Controls.Add(ObjForm_3);
ObjForm_3.Show();
}
}
答案 0 :(得分:0)
从面板上清除控件后,您应该Close
。
public partial class Form_1 : Form
{
private Form frmChild;
public Form_1()
{
InitializeComponent();
}
private void button_1_Click(object sender, EventArgs e)
{
if (frmChild != null)
{
frmChild.Close();
frmChild.Dispose();
}
panelBody.Controls.Clear();
frmChild = new Form_2();
frmChild.TopLevel = false;
frmChild.FormBorderStyle = FormBorderStyle.None;
frmChild.Dock = DockStyle.Fill;
panelBody.Controls.Add(frmChild);
frmChild.Show();
}
private void button_1_Click(object sender, EventArgs e)
{
panelBody.Controls.Clear();
if (frmChild != null)
{
frmChild.Close();
frmChild.Dispose();
}
panelBody.Controls.Clear();
frmChild = new Form_3();
frmChild.TopLevel = false;
frmChild.FormBorderStyle = FormBorderStyle.None;
frmChild.Dock = DockStyle.Fill;
panelBody.Controls.Add(frmChild);
frmChild.Show();
}
}
感谢Jimi
将frmChild.Dispose()
移至panelBody.Controls.Clear()
之前,以查看详细信息。