WPF:鼠标左键单击并按住处理

时间:2011-06-22 16:54:45

标签: wpf mouseevent

在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循环,并在释放鼠标左键时调用处理程序!

3 个答案:

答案 0 :(得分:17)

答案 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。