请教在winform中 MDI应程序中 单件调用窗件类应该怎么写呢?
请教在winform中 MDI应程序中 单件调用窗件类应该怎么写呢?
假如:
在MDI的主菜单中调用子窗体.
只想控制子窗件只有一个实例.
可是子窗打开后关闭掉了,该怎么判断呢?
谢谢.
问题点数:50、回复次数:7Top
1 楼stevejobs(小康)回复于 2003-12-01 17:50:53 得分 0
打字错了,是窗体,不是窗件!
请不要怪,似乎CSDN没有修改帖子的功能~~,没办法.
帮忙顶~一下啊Top
2 楼dahuzizyd(你就是我心中的女神)回复于 2003-12-01 18:44:29 得分 15
这个行不行?
是在button里作的简单的例子,你可以再改改:
private void button1_Click(object sender, System.EventArgs e)
{
if ( this.MdiChildren.Length ==0)
{
Form2 form2 = new Form2();
form2.MdiParent = this;
form2.Show();
}
else
{
for ( int i =0 ; i<= this.MdiChildren.Length -1; i++ )
{
if ( this.MdiChildren[i] is Form2 )
{
this.MdiChildren[i].Activate();
break;
}
else
{
Form2 form2 = new Form2();
form2.MdiParent = this;
form2.Show();
}
}
}
}
private void button2_Click(object sender, System.EventArgs e)
{
Form3 form3 = new Form3();
form3.MdiParent = this;
form3.Show();
}
Top
3 楼FileNewExit((呵呵))回复于 2003-12-01 19:16:03 得分 10
private void buttonNew_Click(object sender, System.EventArgs e)
{
foreach(Form f in this.MdiChildren)//控制子窗件只有一个实例
if(f is Form2)
{
f.Show();
f.Focus();
return;
}
Form2 f2 = new Form2();//子窗从未创建过或打开后关闭掉了,生成一个新的Form
f2.MdiParent = this;
f2.Show();
}
ps:
>>>>控制子窗件只有一个实例
Why use MDI?Top
4 楼GmLibra(平常心)回复于 2003-12-01 19:28:24 得分 5
Form activeChild = this.ActiveMdiChild;
if (activeChild == null)
{
調用子窗體.
}
else
{
不可以調用子窗體.
} Top
5 楼stevejobs(小康)回复于 2003-12-01 20:27:53 得分 0
to: FileNewExit((呵呵))
其实MDI和SDI没区别的~~.~俺多此一举了~
---------------
大家的方法都是在主窗中进行控制.
但似乎与Singleton的动机相违啊.(并非由类自身去保存它自己的唯一实例)
再顶~
如果都是这样的实现方式,那到再结帖吧!
Top
6 楼luhongming(andy)回复于 2003-12-02 09:42:54 得分 20
你在子窗体里声明一个Bool型的表态公有成员变量,是构造函数里把它置为True,在Dispos事件里把它置为False。这样你要创建子窗体的实例时,只要先判断这个Bool变量是True,还是False,是True表示已经有了这个窗体的实例,否则表示没有此窗体的实例。Top
7 楼py3zhsh(西大街霸)回复于 2003-12-02 23:52:59 得分 0
收藏Top




