有时在WinForm中,窗口要求是只打开一个的或许很多时候我们会为每个BUTTON写个事件,在事件里写同样的代码来判断是否有打开窗口,其实我们可以使用泛型和约束来写一个公共的方法,来判断是否打开相同的窗口。方法如下:

private void ShowOrActiveForm<T>(string FormName) where T:Form,new(){#region Form fm;if (Application.OpenForms[FormName] != null){fm = Application.OpenForms[FormName];fm.Activate();}else{fm = new T();fm.MdiParent = this;fm.Show();} #endregion} 

这里定义了一个泛型T,并进行了约束:where T:Form,new()

调用方法如下:

ShowOrActiveForm<UserMain>("UserMain");

其中<UserMain>里面写的是一个Form的类名,("UserMain")里面写的是用来判断的字符串

转载于:https://www.cnblogs.com/hdl217/archive/2010/05/14/1735463.html

WinForm实现只打开一个窗口的代码相关推荐

  1. 在同一个浏览器上打开同一个网址只打开一个窗口的方法

    具体问题看图吧,我自己也说不清楚 具体操作如下: target属性的功能之一是可以在同一个浏览器中只打开被标记相同的网页窗口 利用这一功能可以实现以上问题. target属性链接地址:http://w ...

  2. python怎么打开一个窗口_python – 使按钮一次只打开一个窗口(通过关闭Toplevel窗口启用按钮)...

    我希望NewWinButton一次只创建一个新窗口,这意味着如果 if NewWin.winfo_exists() == 1: NewWinButton.config(state='disabled' ...

  3. 解决Excel 2010打开两个以上文件时,总只显示一个窗口

    用Excel 2010打开两个以上文件时,总只显示一个窗口. 解决方法,打开注册表编辑器,(点运行,输入regedit)定位到 HKEY_CLASSES_ROOT\Excel.Sheet.12\she ...

  4. opengl 深度详解_一步步学OpenGL(1) -《打开一个窗口》

    注意本教程中需要使用的是freeGLUT(GLUT太老会有潜在危险)窗口库和GLEW扩展库. vs2013配置freeGLUT3.0:vs2013 配置 freeglut3.0(opengl的窗口系统 ...

  5. matlab中screen函数,14 用 Screen 函数打开一个窗口

    从今天开始,我打算边解释 PTB 自带的 demo 程序,边讲解一些涉及到的知识点,这样进度会快一点. PTB 的 demo 可以在 Psychtoolbox Demos 网站上获取.另外,在安装目录 ...

  6. js跳转页面与打开新窗口的代码

    js跳转页面与打开新窗口的方法 超链接 详细介绍 在原来的窗体中直接跳转用 在新窗体中打开页面用: 其他语法 各项参数 最基本的弹出窗口代码 经过设置后的弹出窗口 终极应用--弹出的窗口之Cookie ...

  7. 限制程序只打开一个实例(转载)

    当我们在做一些管理平台类的程序(比如Windows的任务管理器)时,往往需要限制程序只能打开一个实例.解决这个问题的大致思路很简单,无非是在程序打开的时候判断一下是否有与自己相同的进程开着,如果有,则 ...

  8. 商务通打开对话窗口容错代码

    在某些情况下,页面加载商务通JS代码失败,导致访客点击咨询按钮无法进入商务通对话窗口,下面医疗模板库为大家整理了一段代码,可以防止因商务通加载失败导致访客无法打开对话窗口这种情况的发生. 完整代码如下 ...

  9. JS打开新窗口的代码window.showModalDialog()

    用JS代码打开新窗口 function openNewWindow(url,width,height,formname) {     var feature="dialogWidth:&qu ...

  10. 限制_blank属性只打开一个新页签

    我们在开发过程中点击a标签或按钮跳转新页签时,如果再次点击该链接或按钮,还会重新打开一个页面.这样的交互效果不是很友好. 使用如下方式可以限制打开新的页签,只保留一个新页签. 1.使用target = ...

最新文章

  1. 图像传感器与信号处理——详解图像传感器噪声
  2. wxWidgets:wxTreeCtrl类用法
  3. matlab watershed函数简单实现_函数指针方法实现简单状态机(附代码)
  4. 数据库实现,以及工厂方法模式实现
  5. GDB and core
  6. 【华为云技术分享】如何处理暗数据?
  7. centosx64 6.2安装virtualbox
  8. 本周小结!(二叉树系列二)
  9. hibernate 调用存储过程
  10. 一周试用yii开发一个带各种该有功能的web程序(三)
  11. CSS3 修改和去除移动端点击事件出现的背景框
  12. 【蓝桥杯】题目分类汇总
  13. Arduino呼吸灯
  14. 音视频开发(四十四):M3U8边缓存边播放
  15. 汽车EE架构 发展过程
  16. 电商翻身受宠社交成大势 2019上市科技股大盘点
  17. 计算机驱动安装的几个方法,不会安装驱动有福了,2个方法教你安装驱动程序,非常实用的知识...
  18. Objective-C学习资源
  19. 微信摇一摇插件ios_iOS摇一摇手机,播放微信摇一摇音效
  20. 数据分析平台页面设计_平台设计剖析

热门文章

  1. MWeb建立静态网站/博客的基础教程
  2. 有赞招聘小程序,有你就很赞
  3. 安装WPS办公软件后广告特别多怎么办?【wps广告】全网最详细!!!
  4. ubuntu远程桌面连接windows系统
  5. saltstack安装使用
  6. 通过定制控制在屏幕上显示图片
  7. FileSync文件同步更新工具
  8. 解決win7打开EXE文件总是出现安全警告
  9. MyEclipse工程转IDEA工程
  10. 程序员简历大曝光,让HR哭笑不得,网友:太老实了!