首页 > 其他分享 >WPF 非Control元素模拟鼠标双击MouseDoubleClick事件

WPF 非Control元素模拟鼠标双击MouseDoubleClick事件

时间:2024-02-26 13:49:12浏览次数:21  
标签:Control ICommand MouseDoubleClick AscanControlSciChart private public mouseRight

private readonly DispatcherTimer _mouseLeftTimer = new DispatcherTimer();
        private readonly DispatcherTimer _mouseRightTimer = new DispatcherTimer();


public Class()
{
            _mouseLeftTimer.Interval = TimeSpan.FromMilliseconds(MOUSE_CLICK_DELAY);
            _mouseLeftTimer.Tick += _mouseLeftTimer_Tick;
            this.PreviewMouseLeftButtonDown += AscanControlSciChart_PreviewMouseLeftButtonDown;

            _mouseRightTimer.Interval = TimeSpan.FromMilliseconds(MOUSE_CLICK_DELAY);
            _mouseRightTimer.Tick += _mouseRightTimer_Tick;
            this.PreviewMouseRightButtonDown += AscanControlSciChart_PreviewMouseRightButtonDown;
}



        private void _mouseLeftTimer_Tick(object sender, EventArgs e)
        {
            _mouseLeftTimer.Stop();
            ClickCommand?.Execute(this);
            _log.Info($"单击:{this.Title}");
        }
        private void AscanControlSciChart_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (e.ClickCount == 2)
            {
                _mouseLeftTimer.Stop();
                DoubleClickCommand?.Execute(this);
                _log.Info($"双击:{this.Title}");
            }
            else
            {
                _mouseLeftTimer.Start();
            }
        }

        private void _mouseRightTimer_Tick(object sender, EventArgs e)
        {
            _mouseRightTimer.Stop();
            RightClickCommand?.Execute(this);
            _log.Info($"右键单击:{this.Title}");
        }
        private void AscanControlSciChart_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (e.ClickCount == 2)
            {
                _mouseRightTimer.Stop();
                //右键双击
            }
            else
            {
                _mouseRightTimer.Start();
            }
        }




        #region 事件
        public ICommand ClickCommand
        {
            get { return (ICommand)GetValue(ClickCommandProperty); }
            set { SetValue(ClickCommandProperty, value); }
        }

        public static readonly DependencyProperty ClickCommandProperty =
            DependencyProperty.Register(nameof(ClickCommand), typeof(ICommand), typeof(AscanControlSciChart), new PropertyMetadata(default(ICommand)));

        public ICommand DoubleClickCommand
        {
            get { return (ICommand)GetValue(DoubleClickCommandProperty); }
            set { SetValue(DoubleClickCommandProperty, value); }
        }

        public static readonly DependencyProperty DoubleClickCommandProperty =
            DependencyProperty.Register(nameof(DoubleClickCommand), typeof(ICommand), typeof(AscanControlSciChart), new PropertyMetadata(default(ICommand)));

        public ICommand RightClickCommand
        {
            get { return (ICommand)GetValue(RightClickCommandProperty); }
            set { SetValue(RightClickCommandProperty, value); }
        }

        public static readonly DependencyProperty RightClickCommandProperty =
            DependencyProperty.Register(nameof(RightClickCommand), typeof(ICommand), typeof(AscanControlSciChart), new PropertyMetadata(default(ICommand)));

        #endregion

 

标签:Control,ICommand,MouseDoubleClick,AscanControlSciChart,private,public,mouseRight
From: https://www.cnblogs.com/lopengye/p/18034145

相关文章

  • oracle指定控制文件启动 ORA-00205: error in identifying control file, check aler
    SQL>startupORACLEinstancestarted.TotalSystemGlobalArea1068937216bytesFixedSize2220200bytesVariableSize708841304bytesDatabaseBuffers352321536bytesRedoBuffers5554176bytesORA-00205:......
  • three.js-轨道控制器(OrbitControls)
    轨道控制器(OrbitControls)Orbitcontrols(轨道控制器)可以使得相机围绕目标进行轨道运动。要使用这一功能,就像在/examples(示例)目录中的所有文件一样,您必须在HTML中包含这个文件。进口OrbitControls是一个附加组件,必须显式导入。See Installation/Addons.import{OrbitCont......
  • PD Controller 学习
    ProportionalDerivative(PD)ControllerPD控制器(比例-微分控制器)是一种常见的反馈控制器,广泛用于工程和控制系统中,以实现期望的控制效果,如机器人臂的精确位置控制或汽车的速度控制。它通过调节控制输入来减少系统的误差,这个误差是指系统当前状态与期望状态之间的差异。PD控制......
  • 跨域 解决办法:利用 Access-Control-Allow-Origin
    ASP.NET中WebAPI解决跨域问题https://www.jb51.net/article/240038.htm 传统的跨域请求没有好的解决方案,无非就是jsonp和iframe,随着跨域请求的应用越来越多,W3C提供了跨域请求的标准方案(Cross-OriginResourceSharing)。IE8、Firefox3.5及其以后的版本、Chrome浏览器、Saf......
  • Android里使用AspectJ实现双击自定义注解
    创建注解首先创建一个双击注解。importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;​/***<pre>*desc:双击*author:刘金*......
  • 多个@RestControllerAdvice全局异常捕获器的顺序问题
    影响一多个捕获器按照加载顺序执行,可以通过@Order注解控制加载顺序,值越小的越先加载,如@Order(Ordered.HIGHEST_PRECEDENCE)最先执行。同时可以在捕获器中加入静态代码块打印日志判断加载顺序,如:static{log.info("GlobalExceptionHandlerclasshasbeenloaded.");......
  • ProTable双击可编辑
    要实现在AntDesign的Table组件中双击单元格修改内容,你可以通过以下步骤来实现:创建一个React组件,并引入所需的依赖:npminstallantd编写示例代码:importReact,{useState}from'react';import{Table,Input}from'antd';constEditableTable=()=>{c......
  • 【转】【WPF】HandyControl调整样式色系
    资源引用以案例项目App.xaml作为系统资源入口,存在如下关系App.xaml:<Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary><ResourceDictionary.......
  • Service Control Manager (SCM):Windows 自带的服务控制管理器(SCM)是一个命令行工具,用于
    ServiceControlManager(SCM):Windows自带的服务控制管理器(SCM)是一个命令行工具,用于安装、启动、停止、删除和查询系统中的服务。您可以使用sc命令来执行这些操作,以及查看服务的状态和配置。描述:    SC是用来与服务控制管理器和服务进行通信    的命令行程......
  • 【C#】【WPF】WPF开源控件库HandyControl应用
    1、首先使用nuget包管理器下载handycontrol 2、app.xaml里面引用,这样可以使用里面的样式<Applicationx:Class="HandyControlTest.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microso......