2016-10-22 43 views
2

我正試圖編寫一個可以用來啓動另一個程序的程序。我有一個按鈕,當它被點擊時,我想開始一個程序,並記錄該程序已啓動。當我開始一個新程序時,我想首先檢查我是否還沒有啓動程序—,如果有,請先關閉現有實例(這樣一次最多隻有一個程序實例存在)。如何在按鈕點擊時保持布爾狀態?

我已經寫了下面的代碼:

private void button1_Click(object sender, EventArgs e) 
{ 
    bool status = false; 
    if (status != true) 
    { 
     status = true; 
     System.Diagnostics.Process.Start("C:\\Users\\David\\Desktop\\Test\\Test.exe"); 
    } 
} 

現在我的問題是,如果我點擊該按鈕時,變量設置爲false,你可以在第一行看。我如何正確地做到這一點?另外,如果狀態設置爲true,我該如何返回0?

+3

請閱讀關於範圍。 PS。你認爲狀態的值應該在'bool status = false'行之後?' –

回答

1

移動bool變量的聲明的方法之外,如果你想跨越調用保存它的價值:

bool status = false; 
Process myProcess; 
private void button1_Click(object sender, EventArgs e) { 
    if (status != true) { 
     myProcess = new Process() 
     myProcess.EnableRaisingEvents = true; 
     status = true; 
     // Start a process to print a file and raise an event when done. 
     myProcess.StartInfo.FileName = "C:\\Users\\David\\Desktop\\Test\\Test.exe"; 
     myProcess.Exited += new EventHandler(Process_Exited); 
     myProcess.Start(); 
    } 
} 

private void Process_Exited(object sender, System.EventArgs e) { 
    status = false; 
} 

現在的診斷消息將拿出只有一次按你的對象的生命週期。一旦進程退出,status重置爲false,讓您再次單擊該按鈕。

另請注意,由於該按鈕在狀態設置爲true後沒有任何操作,因此禁用該按鈕以避免混淆最終用戶是個不錯的主意。

+0

另外,你可以考慮禁用按鈕,因爲它不會做任何事情 – GolezTrol

+0

哦,我試過同樣的事情,但是我的問題是,我直接添加「使用System.Windows.Forms;」 –

+0

感謝您的幫助,有什麼方法可以給您聲望點或類似的東西嗎? –

0

的問題是,你在聲明click_button事件中的變量,因此該變量不能在方法「click_button」

外達成了這樣的事情

bool status = false; 
int ChangeStatus() 
{ 
    if(status!=true) 
    { 
     status = true; 
     System.Diagnostics.Process.Start("C:\\Users\\David\\Desktop\\Test\\Test.exe"); 
     return 0; 
    } 
    return 1; //if the status is false it will return 1 or the value you want 
} 

嘗試然後在Button_Click事件你應該添加

private void button1_Click(object sender, EventArgs e) { 
    //I don't know where you will display or save the value (0 or 1) I will assign it in a variable 
    var result = ChangeStatus(); 
} 

希望它可以幫助你

+0

感謝您的回覆,我嘗試過這樣(不知道如何將它作爲代碼粘貼到此處,因此我將使用pastebin)http://pastebin.com/C0nX9cTj但我無法重新打開Test.exe ,一旦我關閉它。你能告訴我我做錯了什麼嗎? –

+0

我不明白你的意思是「重新打開」。 所以你想讓你的應用程序讀取最後的狀態? 因此,如果我將狀態設置爲「true」並關閉了應用程序,那麼當我再次打開應用程序時,您希望狀態爲真? –

+0

我想要這樣:打開Test.exe - >狀態爲true。然後,如果我關閉Test.exe,狀態應該是false,所以我可以再次打開它。因爲目前,即使Test.exe已關閉,我也無法打開Test.exe。 –

相關問題