Canvas
中有一个UserControl
,我已将DoubleClick
事件附加到UserControl
这样的<{p}}
mainWindow.CanvasLayout.MouseDoubleClick +=
new MouseButtonEventHandler(CanvasLayout_MouseDoubleClick);
我正在使用此事件处理程序来实现全屏功能。
现在,Canvas
可以在其中放置各种控件。对于这些控件实现了拖放功能,类似于this codeproject文章。
基本上,我为控件处理这些事件 -
this._dragSource.PreviewMouseLeftButtonDown +=
new MouseButtonEventHandler(DragSource_PreviewMouseLeftButtonDown);
this._dragSource.PreviewMouseMove +=
new System.Windows.Input.MouseEventHandler(DragSource_PreviewMouseMove);
this._dragSource.PreviewMouseLeftButtonUp +=
new MouseButtonEventHandler(DragSource_PreviewMouseLeftButtonUp);
现在,当控件上的用户DoubleClicks
(存在于canvas
中)执行DoubleClick
(全屏)和单Click
(拖放)操作时,即如果用户双击控件并快速更改其鼠标位置,则控制位置会更改(将其拖放到新位置)。
当用户双击控件时,有什么方法可以阻止拖放操作吗?
答案 0 :(得分:4)
知道了,我使用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;
}
}
答案 1 :(得分:0)
你需要做的是,在鼠标启动时启动一个计时器,应该从SystemInformation.DoubleClickTime
检索时间,并在计时器勾选上执行点击操作(仅当你没有检测到双击时)平均时间,显然)。
同样使用SystemInformation.DragSize
来防止意外拖放。
注意,SystemInformation
类是WinForms的一部分,因此您需要添加对System.Windows.Forms
的引用,此类在WPF应用程序中可以正常工作。