<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
我曾經用過Mutex的方法來實現窗體的互斥運行。。但是會出現失效混亂的情況,令我苦惱不已。
Mutex的方法如下:
using System.Threading; bool Create;
Mutex m =new Mutex( false, "name", out Create );
if( Create ) Application.Run(new FormName());
我想出了這樣一個辦法:
1.在主窗體MainFrm的定義靜態的bool boolFrmName變量,用於存儲窗體的運行狀態
2.在需要啓動的窗體FormName中也要創建靜態Form變量,
public static Form thisForm = new Form();
並在該窗體的Load事件中給thisForm變量賦值 thisForm=this;
2.在解決方案中添加一個類Judge,將類改成static類型,在類中添加如下方法:
public static void RunForm(string FormName)
{
switch(FormName)
case"RunFormName": MainFrm.boolFrmName=true; break;
case"CloseFromName":MainFrm.boolFrmName=false;break;
default: break;
}
3.在啓動時先檢測窗體是否被運行,如果窗體已經運行則激活該窗體
if(boolFrm==false) FormName newForm = new FormName(); newForm.Show(); Judeg.RunForm("RunFormName");
else FormName.thisForm.Activate();