• 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();
    }
    }
    

      

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

  • 相关阅读:
    C#--C/S--学员管理系统--6--班级和下拉框的数据绑定
    C#--C/S--学员管理系统--5--通用验证类的设计和程序退出
    1046. 最后一块石头的重量
    1029. 两地调度
    1005. K 次取反后最大化的数组和
    944. 删列造序
    874. 模拟行走机器人
    860. 柠檬水找零
    map按值排序
    map按键排序
  • 原文地址:https://www.cnblogs.com/hahqb/p/2361961.html
Copyright © 2020-2023  润新知