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); //当关闭你打开的窗口时,执行删除的方法,把这个窗口关闭
            }

     

     
  • 相关阅读:
    git分支
    git使用
    多人协作
    python初心记录二
    python初心记录一
    Javascript 概念类知识
    想成为前端工程师?希望读完这篇文章能对你有所帮助。
    Egret note
    cocos2d-js 连连看
    PS置入图片之后保留选区方便C图
  • 原文地址:https://www.cnblogs.com/wcl2017/p/7339661.html
Copyright © 2011-2022 走看看