永发信息网

请问:winform的父窗体中怎样判断子窗是否存在

答案:3  悬赏:40  手机版
解决时间 2021-04-03 12:33
请问:winform的父窗体中怎样判断子窗是否存在
最佳答案
这就是经典的“单利模式”,解决方法早有人总结出来了,给你举个详细的例子:
两个窗体:父窗体(ParentForm)子窗体(ChildForm),点击父窗体中的按钮只弹出一个弹出子窗体
1.修改子窗体代码
1.1将子窗体的构造函数改为Private(这样就不能随便去new了)
private ChildForm()
{
InitializeComponent();
}
1.2在子窗体中添加一个静态的私有变量,类型就是子窗体类型
private static ChildForm childFromInstanc;
1.3构建该私有静态字段childFromInstanc的静态属性ChildFromInstanc(用来控制 childFromInstanc字段的值)
public static ChildForm ChildFromInstanc
{
get
{
if (childFromInstanc == null || childFromInstanc.IsDisposed)
//判断childFromInstanc是否有值,不为null或者窗体释放(当你将子窗体关了的时候)为childFromInstanc赋值
{
childFromInstanc = new ChildForm();
}
return childFromInstanc;
//返回的childFromInstanc(子窗体存在时返回的是null,关闭了(IsDisposed为true)或者第一次打开子窗体返回一个ChildForm实例)
}
}
2.在父窗体中调用
按钮的单击事件添加下面代码:
private void btnShowChildForm_Click(object sender, EventArgs e)
{
//调用子窗体的静态字段(该静态字段就是一个子窗体实例)
ChildForm cf = ChildForm.ChildFromInstanc;
if (cf != null)
{
cf.Show();//显示子窗体
}
}

完整代码:
子窗体
public partial class ChildForm : Form
{
private ChildForm()
{
InitializeComponent();
}
private static ChildForm childFromInstanc;
public static ChildForm ChildFromInstanc
{
get
{
if (childFromInstanc == null || childFromInstanc.IsDisposed)
//判断childFromInstanc是否有值,不为null或者窗体释放(当你将子窗体关了的时候)为childFromInstanc赋值
{
childFromInstanc = new ChildForm();
}
return childFromInstanc;
//返回的childFromInstanc(子窗体存在时返回的是null,关闭了(IsDisposed为true)或者第一次打开子窗体返回一个ChildForm实例)
}
}
}
父窗体:
private void btnShowChildForm_Click(object sender, EventArgs e)
{
//调用子窗体的静态字段(该静态字段就是一个子窗体实例)
ChildForm cf = ChildForm.ChildFromInstanc;
if (cf != null)
{
cf.Show();//显示子窗体
}
}

说的够详细了吧?嘿嘿
全部回答
C# code
private void button9_Click(object sender, EventArgs e)
{
Form1 singleForm = null;//初始化为空
foreach (Form item in Application.OpenForms)
{
if (item is Form1)
{
singleForm = item;
break;
}
}
if (singleForm == null) singleForm = new Form1();
singleForm.Show();
}
父窗体定义一个成员变量~判断是否为NUll或在不为NUll的情况下是否Disposed
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
螺纹B规和A规有什么区别
永远的毁灭公爵为什么要改时间才能玩?打了最
Thinkpad X220 运行时键盘下面会有吱吱响的声
有行和步的成语
两个新工作,我好纠结选哪个
titus手表调时间
《莽荒纪》里面有哪些姓氏,姓氏分别的来源是
金属里含钨怎么能测试出来
消防工程师大专相近专业指的什么
速度与激情为什么没获得过奥斯卡
我是一名除名女职工,现在52岁能办退休吗
三相四线:南北向的电线杆上有4根平行电线,
元旦都过去了春节还会远吗
爱是件很非凡的事情
7.2千米 7150米 7千米20米从大到小排列
推荐资讯
UCC洗衣(富平正街溢香园茶庄旁)地址在哪,我
徕卡M typ240二手多少钱?带35m/1.4镜头
卧龙区南阳邓记胡辣汤金汤我想知道这个在什么
19×36+19×63+19,这道题递等式简便方法怎么
晚上8:25到早上7:40是多长时间
下列诗句中,哪一项所描写的季节与其他三项不
5乘x减3等于4减x怎么算
盘点的分类有哪些?分别针对哪些商品?
有白蚁的地方才长夏至菇吗
死神vs火影无限连用什么方法能破除
甘肃女人手上虎口处纹有三个点是什么意思?
pycharm显示找不到解释器,我安装的是3.6.4的
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?