只要我按下按钮,如何让 winform 按钮“做某事”?

jef*_*erv 2 c# button visual-studio

我已经尝试了一整天,并查找了各种想法......没有真正的帮助。当我按下一个按钮,比如“JOG”,它会连续移动数控机床轴,只要按下按钮,然后松开,它就会停止。

为了测试这一点,我使用了一个“图片/LED”,当我按住它时,它应该打开……当我松开时,它应该关闭。

按下按钮应该 = 仅在按下时执行某些操作。释放相同的按钮 = 停止做你现在正在做的任何事情。

我敢肯定,对于你们这些先进的人来说,这可能是 101...但对我来说...它正在吃我的午餐...帮助?

Dav*_*ych 5

您可以使用MouseDownMouseUp事件。当MouseDown事件被击中时,调用一个循环并执行您的操作的方法。一旦MouseUp被击中,停止循环。

private bool _run = false;

public void button_MouseDown(object sender, EventArgs e)
{
    _run = true;
    MyAction();
}

public void button_MouseUp(object sender, EventArgs e)
{
    _run = false;
}

public void MyAction()
{
    while(_run)
    {
        //You actions
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,上面的示例将占用 UI 线程。您应该使用 aBackgroundWorker或类似的东西在另一个线程上运行它。

  • 如果没有线程,这可能会锁定您的 UI。在这方面要小心。否则很好的解决方案。 (3认同)