我想在按下鼠标左键时使用循环:
private void Loop_MouseDown(object sender, MouseEventArgs e)
{
while (e.Button==MouseButtons.Left)
{
//Loop
}
}
我无法从此线程使用解决方案:
C# how to loop while mouse button is held down
因为我通过RS232数据发送,并且使用具有自己间隔的计时器不起作用。同样,该主题的任何解决方案均不适用于我。
它也不能像下面这样工作:
if (e.Button == MouseButtons.Left)
{
//loop
}
此解决方案也不起作用:
bool isLooping = false;
//on mouse down
private void myControl_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) {
isLooping = true;
runLoop();
}
//on mouse up event
private void myControl_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) {
isLooping = false;
}
//This is the main loop you care about. Put this in your application
//This should go in its own thread
void runLoop() {
while (isLooping) {
//do stuff
}
}
因为调用runLoop会阻塞线程,所以MouseUp事件将永远不会触发。
那么如何使其正常工作呢?
最佳答案
使用BackGroundWorker。非常适合您的问题。
将循环功能放入工作程序中,并在发生鼠标事件时启动/停止工作程序。
关于c# - 按下鼠标按下按钮时C#循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7712309/