c# - 单击和双击事件在 Canvas 中无法按预期工作

标签 c# .net wpf canvas mouseevent

我有一个 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/

相关文章:

.NET 客户端崩溃时将 COM 注册的 .dll 替换为与客户端相同的 .NET 版本中的新 .dll

c# - 以 IN 作为 List<int> 的数据集和查询

c# - 不使用 Microsoft.Win32 打开文件对话框

c# - TcpListener:检测客户端断开连接,而不是客户端暂时不发送任何数据

c# - 如果文件格式与列表中的任何内容匹配,则改进 C# 中的测试方法

c# - 使用 WinAPI 在 C# 中从任务栏隐藏窗口

c# - 从堆栈面板中删除元素

c# - 如何添加到结构体数组中

c# - 使用 Entity Framework 按日期执行搜索

c# - 我应该尽可能使用 const string 而不是 string 吗?