首页 / C# / C#利用泛型,避免子窗体重复开启
C#利用泛型,避免子窗体重复开启
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#利用泛型,避免子窗体重复开启,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1605字,纯文字阅读大概需要3分钟。
内容图文
![C#利用泛型,避免子窗体重复开启](/upload/InfoBanner/zyjiaocheng/838/9e6a2e72caf9493b910d9034600266ec.jpg)
我最近在做一个项目,主界面上有很多button,每个button基本上对应了一个窗口,但是在之前版本的源代码中并没有加入防止子窗体重复开启的代码。
于是百度了一下,看到了如下的代码:
1、在主界面的类中定义内部全局变量:
1 private static Form1 newF;
2、在button函数中定义
1 private void button1_Click(object sender, EventArgs e) 2 { 3 4 if (newF == null || newF.IsDisposed) 5 { 6 newF = new Form1(); 7 newF.Show(); 8 } 9 else 10 { 11 newF.WindowState = FormWindowState.Normal; 12 newF.Activate(); 13 } 14 }
即如果检测到Form1窗体不存在的话就new一个,这样的话就能保证最多存在一个Form1的实例。
但是如果每个button再写一个这样的函数的话就很麻烦而且冗余。
于是想到了泛型,便有了下面的代码,定义一个泛型函数:
1 public static void Formshow<T>(ref T newForm) where T : Form,new() 2 { 3 if (newForm == null || newForm.IsDisposed) 4 { 5 newForm = new T(); 6 newForm.Show(); 7 } 8 else 9 { 10 newForm.WindowState = FormWindowState.Normal; 11 newForm.Activate(); 12 } 13 }
使用代码
1 private void button1_Click(object sender, EventArgs e) 2 { 3 Formshow<Form1>(ref newF); 4 }
这样看起来是不是简洁多了?
注意ref,如果没加ref标识符会导致newF无法赋值,就会每点一次都实例化一个窗体。
然后要注意的是Form1的构造函数不能含有参数,按照有参数写的话会报错。
转载请注明:https://www.cnblogs.com/fuqiang/p/10512415.html
内容总结
以上是互联网集市为您收集整理的C#利用泛型,避免子窗体重复开启全部内容,希望文章能够帮你解决C#利用泛型,避免子窗体重复开启所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。