C#中MDI子窗体的关闭问题
做一个简单的父窗体,和子窗体,父窗体的文件菜单栏有新建和关闭两个子选项,。问题是,如何设计,:运行父窗体时,新建菜单可用,关闭菜单不可以用。当我点了新建后,有子窗体在父窗...
做一个简单的父窗体,和子窗体,父窗体的文件菜单栏有新建和关闭两个子选项,。
问题是,如何设计,:运行父窗体时,新建菜单可用,关闭菜单不可以用。当我点了新建后,有子窗体在父窗体中时,关闭菜单可用;当子窗体被关完时候,关闭ToolStripMenuItem.Enabled = false; 展开
问题是,如何设计,:运行父窗体时,新建菜单可用,关闭菜单不可以用。当我点了新建后,有子窗体在父窗体中时,关闭菜单可用;当子窗体被关完时候,关闭ToolStripMenuItem.Enabled = false; 展开
4个回答
展开全部
在父窗体里创建一个public ChildFormCollection childForm
在子窗体的load函数里向父窗体的childForm.add(this);
在子窗体的close函数里向父窗体的childForm.remove(this);
在父窗体里检测childForm是否为空,或者直接把子窗体显示出来。
public class ChildFormCollection{
public add(){
Messgesbox.Show("呀,新的窗体,我要干点什么呢?");
}
public remove(){
Messgesbox.Show("呀,少了个窗体,我看看是不是都没有了,没有了的话我要禁用按钮了");
}
}
在子窗体的load函数里向父窗体的childForm.add(this);
在子窗体的close函数里向父窗体的childForm.remove(this);
在父窗体里检测childForm是否为空,或者直接把子窗体显示出来。
public class ChildFormCollection{
public add(){
Messgesbox.Show("呀,新的窗体,我要干点什么呢?");
}
public remove(){
Messgesbox.Show("呀,少了个窗体,我看看是不是都没有了,没有了的话我要禁用按钮了");
}
}
展开全部
在子窗体的构造函数中传递变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那么麻烦~用计数器
//创建新窗口
private void OpenNew(object sender, EventArgs e) {
var f2 = new Form2 { MdiParent = this, };
f2.FormClosed += Form2Closed;
f2.Show();
if (++windows > 0) {
//……
}
}
private int windows = 0;
private void Form2Closed(object sender, EventArgs e) {
if (--windows <= 0) {
//……
}
}
//创建新窗口
private void OpenNew(object sender, EventArgs e) {
var f2 = new Form2 { MdiParent = this, };
f2.FormClosed += Form2Closed;
f2.Show();
if (++windows > 0) {
//……
}
}
private int windows = 0;
private void Form2Closed(object sender, EventArgs e) {
if (--windows <= 0) {
//……
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用委托事件
在子窗体和父窗体之间进行调用
在子窗体和父窗体之间进行调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询