本人做了一个报警装置及一个报警窗体,通过弹出窗体来起到报警效果!当达到条件的时候
baojing bj=new baojing();
bj.show();
但是如果条件多次达到条件时候,会弹出很多个窗体,请问如何只弹出一次窗体??不要说要messagebox,这个我知道的。。我是说用窗体来当报警提示.
baojing bj=new baojing();
bj.show();
但是如果条件多次达到条件时候,会弹出很多个窗体,请问如何只弹出一次窗体??不要说要messagebox,这个我知道的。。我是说用窗体来当报警提示.
Application.OpenForms["baojing"]
// 取到你那个已经打开的用于报警的窗体 然后将报警信息加上就可以了 不要用New 因为New会产生一个新的窗体
{
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/
再在报警条件加入以下代码:
if (form2 != null && form2.Created)
{
form2.Focus();
return;
} form2 = new Form2();
// form2.MdiParent = this;
form2.Show();
报警的时候的设为show(),不要用new;
{
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;
}