一个WPF控件 诡异的MouseEvent 。
背景:
private System.Windows.Controls.Border _borderTouch;
private bool _mouseDown = false;
private System.Windows.Point _currentPoint = new System.Windows.Point(0, 0);
private System.Windows.Point _lastPoint = new System.Windows.Point(0, 0);
一个wpf Border控件,然后注册鼠标事件
touch.MouseLeftButtonDown += new MouseButtonEventHandler(touch_MouseLeftButtonDown);
touch.MouseLeftButtonUp += new MouseButtonEventHandler(touch_MouseLeftButtonUp);
touch.MouseLeave += new MouseEventHandler(touch_MouseLeave);
touch.MouseMove += new MouseEventHandler(touch_MouseMove);
private void touch_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
//if (this._mouseDown)
//{
this._mouseDown = false;
//}
}
private void touch_MouseLeave(object sender, MouseEventArgs e)
{
//if (this._mouseDown)
//{
this._mouseDown = false;
//}
}
private void touch_MouseMove(object sender, MouseEventArgs e)
{
if (this._mouseDown)
{
_currentPoint = e.GetPosition(this._borderTouch);
//if (_currentPoint == _lastPoint) return;
//_lastPoint = _currentPoint;
}
}
private void touch_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (!this._mouseDown)
{
this._mouseDown = true;
_currentPoint = e.GetPosition(this._borderTouch);
//_lastPoint = _currentPoint;
}
}
操作过程:
1. 点鼠标左键触发touch_MouseLeftButtonDown一次,
2. 然后移动鼠标触发touch_MouseMove(注明:如果鼠标在某点不动,相同坐标只触发一次,然后事件不再触发,如果再移动接触发),
3. 鼠标离开(或者左键松开)触发touch_MouseLeave(touch_MouseLeftButtonUp)一次。
问题:
1. 在我的电脑上对应以上操作过程包括触发事件的次数。
我的电脑配置:
2. 但是在第二个电脑上就不一样,
第2个过程鼠标不动的时候会触发10多次然后就不触发啦(也就是说相同的坐标会触发10多次touch_MouseMove然后不再触发)
第3个过程也是触发10多次,然后停止触发。
第二个电脑配置:
解决:
我想要的当然是我电脑上的正常操作过程,为同步另一台电脑。
我改啦下代码,但是我不知道为什么会有这样的差异。
1. touch_MouseMove 添加判断上一次的坐标和现在的坐标是否相同,如果相同就return
if (_currentPoint == _lastPoint) return;
_lastPoint = _currentPoint;
2. touch_MouseLeftButtonUp/touch_MouseLeave 添加判断
if (this._mouseDown)
{
this._mouseDown = false;
}
一个WPF控件 诡异的MouseEvent 。的更多相关文章
- 使用 WebView2 封装一个生成 PDF 的 WPF 控件
使用 WebView2 封装一个生成 PDF 的 WPF 控件 最近在迁移项目到 .net6,发现项目中用的 PDF 库不支持 .net6,于是想着换一个库.结果找了一大圈,发现不是版本不支持,就是收 ...
- 在WinForm应用程序中嵌入WPF控件
我们知道,在WPF界面上添加WinForm的控件需要使用WindowsFormHost类.而在WinForm界面上添加WPF控件该如何做呢?有没有类似的类呢?明显是有的,ElementHost就是为了 ...
- WPF 控件总结
内容控件:1.Button:当Button.IsCancel="True"时,点击按钮,对话框关闭.当Button.IsDefault="True",按回车触发 ...
- 浅尝辄止——使用ActiveX装载WPF控件
1 引言 使用VC编写的容器类编辑器,很多都可以挂接ActiveX控件,因为基于COM的ActiveX控件不仅封装性不错,还可以显示一些不错的界面图元. 但是随着技术不断的进步,已被抛弃的Active ...
- WPF控件
1:内容控件(Content Controls)2:条目控件(Items Controls)3:文本控件(Text Controls)4:范围控件(Range Controls) 一:内容控件 内容控 ...
- 通过WinForm控件创建的WPF控件无法输入的问题
今天把写的一个WPF程序发布到别的机器上执行,发现一个比较奇怪的问题:在那个机器上用英文输入法无法输入数字,非要切换到中文输入法才行:但在我的机器上却是好好的. 最开始以为是输入法的问题,弄了好一阵子 ...
- WPF控件模板
引言:在进行WPF项目开发过程中,由于项目的需要,经常要对某个控件进行特殊的设定,其中就牵涉到模板的相关方面的内容.本文也是在自己进行项目开发过程中遇到控件模板设定时集中搜集资料后整理出来的,以供在以 ...
- 关于WinForm引用WPF窗体---在Winform窗体中使用WPF控件
项目中有个界面展示用WPF实现起来比较简单,并且能提供更酷炫的效果,但是在WinForm中使用WPF窗体出现了问题,在网上找了一下有些人说Winform不能引用WPF的窗体,我就很纳闷,Win32都能 ...
- winfrom窗体中嵌套WPF控件
前言 本文主要介绍如何在winfrom窗体中嵌套WPF控件, 一来是自己记录一下,而来希望能对有需要的朋友提供实现思路. 如有错误请指出...下面进入正题... -1.前期准备 准备一个建立好的win ...
随机推荐
- 读懂IL代码就这么简单 (一)
一前言 感谢 @冰麟轻武 指出文章的错误之处,现已更正 对于IL代码没了解之前总感觉很神奇,初一看完全不知所云,只听高手们说,了解IL代码你能更加清楚的知道你的代码是如何运行相互调用的,此言一出不明觉 ...
- 安装laravel5.1项目命令
作为程序员还有什么比命令行执行效率还要快的呢,哈哈... composer create-project laravel/laravel your-project-name --prefer-dist ...
- c8051f320学习,单片机不外乎时钟、IO、串口、USB等外设用法
时钟 IO(输入.输出,如何配置) IO 数字和模拟资源可以通过25个I/O 引脚(C805 1F3 2 0 ),每个端口引脚都可以被定义为 通用I/O(GPIO)或 0 模拟输入 所有端口I ...
- [转]Linux系统中‘dmesg’命令处理故障和收集系统信息的7种用法
'dmesg'命令显示linux内核的环形缓冲区信息,我们可以从中获得诸如系统架构.cpu.挂载的硬件,RAM等多个运行级别的大量的系统信息.当计算机启动时,系统内核(操作系统的核心部分)将会被加载到 ...
- ALinq Dynamic 使用指南——代码的获取与编译
1.下载代码 ALinq Dynamic 项目托管在 CodePlex 网站,你可以使用浏览器下载压缩包,或者通过 SVN 获取. 项目网址:http://esql.codeplex.com/ 压缩包 ...
- CSS 问题集锦
[1]让DIV中的内容居中 1.文字垂直居中,关键代码:height:100px;line-height:100px(两个值要相等) <div style="margin:0 auto ...
- tomcat设置端口号和默认webapp
tomcat一下载,解压之后webapps目录下自带几个webapp: * docs文档:这是一个静态页面集,不用启动tomcat也可以阅读 * examples样例 * hostmanager主机管 ...
- 15-grep 简明笔
在文件中搜索模式 grep [options] pattern [file-list] 参数 pattern为正则表达式,file-list为grep要搜索的普通文本文件的路径名列表 选项 -c ...
- Linux vsftp配置本地用户
主要讲的是配置本地用户, ftp现在用的也少了,一般都用ssh和svn 1. 安装ftp yum -y install vsftpd 2. 配置 /etc/vsftpd/vsftpd.conf # ...
- nginx 的动静分离配置(tomcat)
nginx+tomcat是想动静分离配置 首先在nginx的配置文件中添加tomcat的的集群配置 upstream tomcats { ip_hash; server 192.168.0.251:8 ...