C#中MDI子窗体的关闭问题

做一个简单的父窗体,和子窗体,父窗体的文件菜单栏有新建和关闭两个子选项,。问题是,如何设计,:运行父窗体时,新建菜单可用,关闭菜单不可以用。当我点了新建后,有子窗体在父窗... 做一个简单的父窗体,和子窗体,父窗体的文件菜单栏有新建和关闭两个子选项,。
问题是,如何设计,:运行父窗体时,新建菜单可用,关闭菜单不可以用。当我点了新建后,有子窗体在父窗体中时,关闭菜单可用;当子窗体被关完时候,关闭ToolStripMenuItem.Enabled = false;
展开
 我来答
lum2005cn
推荐于2016-03-16 · TA获得超过2928个赞
知道小有建树答主
回答量:139
采纳率:0%
帮助的人:107万
展开全部
在父窗体里创建一个public ChildFormCollection childForm

在子窗体的load函数里向父窗体的childForm.add(this);

在子窗体的close函数里向父窗体的childForm.remove(this);

在父窗体里检测childForm是否为空,或者直接把子窗体显示出来。

public class ChildFormCollection{

public add(){
Messgesbox.Show("呀,新的窗体,我要干点什么呢?");
}

public remove(){
Messgesbox.Show("呀,少了个窗体,我看看是不是都没有了,没有了的话我要禁用按钮了");
}

}
百度网友331112cc1
2009-11-11 · TA获得超过1310个赞
知道小有建树答主
回答量:1070
采纳率:100%
帮助的人:437万
展开全部
在子窗体的构造函数中传递变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yissyo
2009-11-11 · TA获得超过230个赞
知道小有建树答主
回答量:90
采纳率:0%
帮助的人: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) {
//……
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hwqy
2009-11-10 · 超过10用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:41.9万
展开全部
用委托事件
在子窗体和父窗体之间进行调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式