Я хотел бы использовать цикл в то время как левая MouseButton нажата:C# цикл, пока кнопка нажата MouseDown
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 никогда не будет огня.
Итак, как заставить его работать правильно?
Зачем вам это нужно? – TJHeuvel
Почему таймер не работает? – SLaks
Рассматривали ли вы использование API для получения текущего состояния кнопки мыши? –