zoukankan      html  css  js  c++  java
  • winform唯一窗体

           唯一窗体,你需要考虑几点,首先,你打开和关闭时候的问题,打开新的窗体,是否关闭原先的窗体,考虑到焦点的问题。每次当你打开新的窗体的时候,原先的窗体没有关闭,我们把它存在了一个集合里,判断这个集合里是否有这个窗体,建立的集合,当你删除你新打开的窗体时,只是把后台删了,但集合里还是有这个窗体,这时你再打开新的窗体时需要去比较,看看是否打开的窗体一样,一样的话就直接打开,没有一样的说明集合里没有和你将要打开的窗体一致的,需要你新打开一个窗体。

      public Form1()
            {
                InitializeComponent();
            }
    
            List<Form> list = new List<Form>();  //建立一个集合  放窗口
            private void 销售ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Form2 f2 = new Form2(this);
                f2.Name = "f2";
                onlyone(f2); ;
    
            }
            private void 业务ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Form3 f3 = new Form3(this);
                f3.Name = "f3";
                onlyone(f3);
            }
    
            private void 财务ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Form4 f4 = new Form4(this);
                f4.Name = "f4";
                onlyone(f4); //引用查询的方法 ,看看是否在里面
            }
    
            public void deletefm(Form ff)
            {
                list.Remove(ff); //集合里移除 这个方法用在当关闭其他窗体时。删除只能是你关闭时删除谁,不能删其他的窗口,建立这个方法是为了 ,但你关闭窗口时,集合里还保存着原有的窗口,当你再次打开时,你打开了一个新的窗口,而不是第一个哪一个窗口,所以,当你关闭时,你要删除原先打开那个窗口,打开一个新的。 
            }
    
    
            //查找的方法 看看是否在集合里面,如果在理就用,不在里面就添加进去
            public void onlyone(Form newf)
            {
                bool has = false;
                foreach (Form u in list)
                {
    
                    if (u.Name == newf.Name)
                    {
                        has = true;
                        newf = u; //集合里原有的那个窗口
    
                    }
                }
                if (has == false)
                {
                    newf.Show();
                    list.Add(newf);
                }
                else
                {
                    newf.WindowState = FormWindowState.Normal;  //窗体的初始可视状态
                    newf.Focus();  //j焦点在哪里 
                }
            }


     Form1 F1;
            public Form2(Form1 f1)  //传值过来
            {
                InitializeComponent();
                F1 = f1;
            }
    
            private void Form2_FormClosing(object sender, FormClosingEventArgs e)
            {
                F1.deletefm(this); //当关闭你打开的窗口时,执行删除的方法,把这个窗口关闭
            }
    
    
    
     
  • 相关阅读:
    hdu2653 Waiting ten thousand years for Love
    Request
    freetextbox 使用方法+下载
    格式化字符串 GridView DataFormatString
    GridView 中的button LinkButton 事件 CommandName
    Response 缓存
    Windows 7下VS2008升级
    ASP.NET中备份SQL Server数据库的方法
    asp.net和c#实现定时备份数据库(SQL Server2000)
    asp.net 中保存 数据库几种对象
  • 原文地址:https://www.cnblogs.com/liuyubin0629/p/7206252.html
Copyright © 2011-2022 走看看