如何在按钮单击之间保持布尔值的状态

本文关键字:布尔值 状态 之间 按钮 单击 | 更新日期: 2023-09-27 18:14:29

我正在尝试编写一个可用于启动另一个程序的程序。我有一个按钮,当它被点击时,我想启动一个程序,并记录程序已经启动。当我开始一个新项目时,我想先检查一下我是否还没有开始该项目—如果有,请先关闭现有实例(这样一次最多会存在一个程序实例(。

我已经写了以下代码:

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?

如何在按钮单击之间保持布尔值的状态

如果您想在调用之间保留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后,该按钮不会执行任何操作,因此最好禁用它,以避免混淆最终用户。

问题是您在click_button事件中声明变量,因此无法在方法"click_bbutton"之外访问该变量

试试这种

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();
 }

希望它能帮助你