在WPF中按住鼠标左键时如何重复执行操作?
UIElement.PreviewMouseLeftButtonDown事件的以下事件处理程序无法完成任务:
private void BaseButtonRight_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
// keep performing action while mouse left button is pressed.
// Checking e.ButtonState works only for one click
}
执行甚至不进入while循环,并在释放鼠标左键时调用处理程序!
答案 0 :(得分:17)
为什么不使用RepeatButton?
http://msdn.microsoft.com/en-us/library/ms746649(v=vs.85).aspx
答案 1 :(得分:1)
启动BackroundWorker,当鼠标释放后退出。使用鼠标按下事件设置标志,并在BackgroundWorker DoWork函数中定期检查。确保在访问标志时使用锁{}。
编辑:如果您想访问UI线程上的内容,请使用Dispatcher.BeginInvoke,例如:
Dispatcher.BeginInvoke(new ThreadStart(delegate
{
ComboBoxItem selItem = ComboboxConnectString.SelectedItem as ComboBoxItem;
if (selItem != null && selItem.Tag is string)
ComboboxConnectString.Text = (string)selItem.Tag;
}));
答案 2 :(得分:0)
运行一个线程,直到触发MouseLeftButtonUp。