c#中讓Windows窗體只運行一次,並在第二次啓動窗體時激活該窗體


<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<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();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章