zoukankan      html  css  js  c++  java
  • winform中实现不重复创建窗体

    晚上有网友问了个问题,“通过button的click事件,实例化一个窗体,并show()。当我多次点击button时,会产生多个窗体。请问怎么解决这个问题?不想通过设置button的enable=false来解决这个问题。”其实这也算是一个比较实际的问题,有网友回答说可以使用模式窗体,呵呵,稍微想了下确实是可以解决问题。另一网友提出若不用模态框可否解决。我的第一反应就是加判断,随意回了句“先判断窗体是否存在。”。正好我刚创建了个新项目,打算随便写点小程序,于是试写下怎么判断。
    我的做法是:起始窗口(frmMain)中加个按钮,添加一个新窗体,命名为frmTest(可选);在按钮单击事件中作判断,完整代码如下:

    public partial class frmMain : Form
    {
    private frmTest frm = null;
    public frmMain()
    {
    InitializeComponent();
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
    if (frm == null || frm.IsDisposed)
    {
    frm = new frmTest();
    frm.Show();
    }
    else
    {
    MessageBox.Show("Exists");
    }
    }
    }
    

      

    这样做基本是可以解决问题了。有网友建议不要提示窗体存在,直接将窗体显示出来就行了,因此将代码改为:

    public partial class frmMain : Form
    {
    private frmTest frm = null;
    public frmMain()
    {
    InitializeComponent();
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
    if (frm == null || frm.IsDisposed)
    {
    frm = new frmTest();
    }
    frm.Show();
    frm.Activate();
    }
    }
    

      

    这样应该是搞定了。看了下代码很简单,没啥技术含量。固本文只作为个人日记记录,不是技术文章。留着以后看看自己当年是从一个什么级别的菜鸟过来的。

  • 相关阅读:
    ***php 数组添加关联元素的方法小结(关联数组添加元素)
    阿里云PHP Redis代码示例
    linux内核编程笔记【原创】
    linux RTC 驱动模型分析【转】
    linux 实时时钟(RTC)驱动【转】
    RTC系统【转】
    IRQ和FIQ中断的区别【转】
    NAND Flash【转】
    NandFlash详述【转】
    展讯NAND Flash高级教程【转】
  • 原文地址:https://www.cnblogs.com/hahqb/p/2361961.html
Copyright © 2011-2022 走看看