本人做了一个报警装置及一个报警窗体,通过弹出窗体来起到报警效果!当达到条件的时候
baojing bj=new baojing();
bj.show();
但是如果条件多次达到条件时候,会弹出很多个窗体,请问如何只弹出一次窗体??不要说要messagebox,这个我知道的。。我是说用窗体来当报警提示.

解决方案 »

  1.   


    Application.OpenForms["baojing"]  
    // 取到你那个已经打开的用于报警的窗体 然后将报警信息加上就可以了  不要用New 因为New会产生一个新的窗体
      

  2.   

    用单件模式public class baojing
    {
    private baojing()
    {
    }
    private static baojing _baojing;
    private static object _lockobj=new object();
    public static baojing GetForm()
    {
    lock(_lockobj)
    {
    if(_baojing==null  || _baojing.Disposed)
    {
    _baojing=new baojing();
    }
    }
    return _baojing;
    }
    }//使用
    baojing bj= baojing.GetForm(); 
    bj.show();   
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  3.   

    先在全局变量定义 private Form2 form2 = null;
    再在报警条件加入以下代码:
                if (form2 != null && form2.Created)
                {
                    form2.Focus();
                    return;
                }            form2 = new Form2();
                //  form2.MdiParent = this;
                form2.Show(); 
      

  4.   

    定义为全局的baojing form,设置为hide();
    报警的时候的设为show(),不要用new;
      

  5.   

    static void Main()
            {
                bool isOnlyOne = true;            // 使用Process类来检测是否已经存在本应用程序的进程:
                Process[] p = Process.GetProcessesByName("baojing");
                {
                    if (p.Length > 1)
                        isOnlyOne = false;
                }
                // 使用互斥体:
                //System.Threading.Mutex mtx = new System.Threading.Mutex(false, "OnlyOne", out   isOnlyOne);            if (isOnlyOne)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new MainForm());
                }
                else
                    return;
            }