我将一个窗体加载到 panel控件中,但是我如何关闭这个窗体呢?
我要在窗口的外部关闭它,不知如何做好?
再找个窗口的内部关闭它很容易,直接 this.close()就行了,但是,在窗口外部,如何通过代码关闭它呢?
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.TopLevel = false;
frm.Parent = panel1;
frm.Show();
}
以上代码就是我将一个窗口加载到 panel 控件中的代码,
我有可能随时将不同的窗体,加载到 panel中,所以要关闭已经打开的窗体。
我要在窗口的外部关闭它,不知如何做好?
再找个窗口的内部关闭它很容易,直接 this.close()就行了,但是,在窗口外部,如何通过代码关闭它呢?
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.TopLevel = false;
frm.Parent = panel1;
frm.Show();
}
以上代码就是我将一个窗口加载到 panel 控件中的代码,
我有可能随时将不同的窗体,加载到 panel中,所以要关闭已经打开的窗体。
解决方案 »
- 难道是c#的日期控件有bug,当前日期1月31日,我修改成2月再回车,就会异常?
- TreeView1 添加节点出现了莫名其妙的问题!向各位高手求助!
- C#可以处理VC里的消息么
- 怎么知道.net中的哈希密码呀!
- 点击按钮出错,但是跟踪不到错误?
- 找了很久也找不到:C# 圆角矩形 画法,请告知
- 如何添加TreeView控控啊?
- 求解决方案(分不够再加)先给70分
- 想用DB做OA,如何实现公文的痕迹保留?(在线)
- 我的98有时启动后,打开我的电脑后提示EXPLORER非法操作,但是重起一下又好了搞不懂?
- 浮点计算的奇怪问题
- 用TableAdapters 方式删除数据库中某个表中所有行的最佳方法是什么
foreach (Control con in this.panel1.Controls)
{
if (con is Form2)
{
Form2 t = con as Form2;
t.Close();
}
}虽然这样可以。但是应该有更好的办法。
//加个判断就可以
if(panel1.Controls.Count>0)
{
((Form)panel1.Controls[0]).Close();
}
{
//判断是否加载有子控件。
}
private Form2 f2; private void button1_Click(object sender, EventArgs e)
{
f2 = new Form2();
f2.TopLevel = false;
f2.Parent = panel1;
f2.Show();
} private void button2_Click(object sender, EventArgs e)
{
f2.Close();
}
所以,panel 中加载的窗体的关闭,要通过左边的导航条进行控制。
2.form声明成类内 方法外变量
放FORM再关掉的话,要在Panel里声明一个变量,用来保存当前的窗口,如果会加载多个窗口那就用List<Form>,从外部关闭窗口后,清空变量或从List<Form>中移附对就的窗口
在视图调取按钮事件上: //若不存在则创建窗体
if (currentForm.Name != "FormName") // FormName为要加载的自定义控件的名称
{
if (panel1.Controls.Count > 0)
{
panel1.Controls.RemoveAt(0); //移除原有视图。此次可根据需要发挥。
}
currentForm = new FormMainDate();
currentForm.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Controls.Add(currentForm);
currentForm.Show();
}