2016-10-22 42 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。 –

相关问题