我有一个 Canvas
,它存在于 UserControl
中,我已将 DoubleClick
事件附加到此 UserControl
> 像这样
mainWindow.CanvasLayout.MouseDoubleClick +=
new MouseButtonEventHandler(CanvasLayout_MouseDoubleClick);
我正在使用此事件处理程序来实现全屏功能。
现在,Canvas
可以在其中放置各种控件。这些控件的拖放功能的实现类似于 this代码项目文章。
基本上,我为控件处理这些事件 -
this._dragSource.PreviewMouseLeftButtonDown +=
new MouseButtonEventHandler(DragSource_PreviewMouseLeftButtonDown);
this._dragSource.PreviewMouseMove +=
new System.Windows.Input.MouseEventHandler(DragSource_PreviewMouseMove);
this._dragSource.PreviewMouseLeftButtonUp +=
new MouseButtonEventHandler(DragSource_PreviewMouseLeftButtonUp);
现在,当用户在控件(存在于 canvas
中)上 DoubleClicks
时,DoubleClick
(全屏)和单次 Click
执行(拖放)操作,即如果用户双击控件并快速更改其鼠标位置,则控件位置会发生更改(将其拖放到新位置)。
当用户双击控件时,有什么方法可以阻止拖放操作吗?
最佳答案
明白了,我没有处理 MouseDoubleClick
事件,而是使用 PreviewMouseLeftButtonDown
-
mainWindow.CanvasLayout.PreviewMouseLeftButtonDown
+= new MouseButtonEventHandler(CanvasLayout_PreviewMouseLeftButtonDown);
和
void CanvasLayout_PreviewMouseLeftButtonDown(object s, MouseButtonEventArgs e)
{
if (e.ClickCount > 1)
{
// Do double-click code
// Code for FullScreen
e.Handled = true;
}
}
关于c# - 单击和双击事件在 Canvas 中无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3227060/