如何检查一个按钮是否被点击,在C#中的windows窗体应用程序中的另一个按钮点击事件中

本文关键字:按钮 窗体 windows 应用程序 中的 何检查 事件 另一个 一个 是否 检查 | 更新日期: 2023-09-27 18:00:32

我在表单上有两个按钮,我想用第一个按钮开始数据传输,然后按下第二个按钮停止。

代码为:

private void stdaq_Click(object sender, EventArgs e)
{
    stopped = false;
    //while (stopped == false)
    if (sender == spdaq)
    {
        stopped = true;
        ///break;
        Process();
    }
    else if (sender == stdaq)
    {
        Process();
    }
}

这里stdaq是开始按钮,spdaq是停止按钮,process函数是我正在实现的一个函数,在这个函数中,使用bool类型的停止变量,我在process方法中实现了两个不同的函数,但我想不断地检查是否按下了停止按钮,但在这里,用这个代码我没有成功。

因此,请帮助我如何在按下停止按钮时,将值true传递给启动按钮本身的事件点击函数中的停止变量。

如何检查一个按钮是否被点击,在C#中的windows窗体应用程序中的另一个按钮点击事件中

创建取消令牌,在按钮中启动异步Task启动事件处理程序将您的方法放入该Task中,传递对此取消令牌的引用并使用它可以在以后需要时在"停止"按钮事件处理程序中停止此任务。

更多信息:https://msdn.microsoft.com/en-us/library/jj155759.aspx

如何使用它的示例:

    static CancellationTokenSource cts;
    static Task t;
    private void Method()
    {
        while (!cts.IsCancellationRequested) 
        {
             // your logic here
        }
        t = null;
    }
    private void stdaq_click (object sender, EventArgs e)
    {           
       if(t != null) return;
       cts = new CancellationTokenSource();
       t = new Task(Method, cts.Token, TaskCreationOptions.None);
       t.Start();
    }
    private void spdaq_Click(object sender, EventArgs e) 
    {
       if(t != null) cts.Cancel(); 
    }

对于启动和停止按钮使用两个独立的Handler。这使您的逻辑更易于遵循。然后这样做:

private void stdaq_Click(object sender, EventArgs e) // Start
{
    Process(true);
}
private void spdaq_Click(object sender, EventArgs e) // Stop
{
    Process(false);
}

或者更好:创建两个独立的方法StartProcess()StopProcess()