模拟鼠标双击,用于没有鼠标双击控件
来源:互联网 发布:在淘宝买精密管犯法吗 编辑:程序博客网 时间:2024/04/30 02:46
internal static class MouseButtonHelper
{
private const long k_DoubleClickSpeed = 500;
private const double k_MaxMoveDistance = 10;
private static long _LastClickTicks = 0;
private static Point _LastPosition;
private static WeakReference _LastSender;
internal static bool IsDoubleClick(object sender, MouseButtonEventArgs e)
{
Point position = e.GetPosition(null);
long clickTicks = DateTime.Now.Ticks;
long elapsedTicks = clickTicks - _LastClickTicks;
long elapsedTime = elapsedTicks / TimeSpan.TicksPerMillisecond;
bool quickClick = (elapsedTime <= k_DoubleClickSpeed);
bool senderMatch = (_LastSender!= null && image.Tag ==_LastSender.Tag);
_LastSender= sender;
if (senderMatch && quickClick && position.Distance(_LastPosition) <= k_MaxMoveDistance)
{
// Double click!
_LastClickTicks = 0;
_LastSender= null;
return true;
}
// Not a double click
_LastClickTicks = clickTicks;
_LastPosition = position;
if (!quickClick)
_LastSender = new WeakReference(sender);
return false;
}
private static double Distance(this Point pointA, Point pointB)
{
double x = pointA.X - pointB.X;
double y = pointA.Y - pointB.Y;
return Math.Sqrt(x * x + y * y);
}
}
{
private const long k_DoubleClickSpeed = 500;
private const double k_MaxMoveDistance = 10;
private static long _LastClickTicks = 0;
private static Point _LastPosition;
private static WeakReference _LastSender;
internal static bool IsDoubleClick(object sender, MouseButtonEventArgs e)
{
Point position = e.GetPosition(null);
long clickTicks = DateTime.Now.Ticks;
long elapsedTicks = clickTicks - _LastClickTicks;
long elapsedTime = elapsedTicks / TimeSpan.TicksPerMillisecond;
bool quickClick = (elapsedTime <= k_DoubleClickSpeed);
bool senderMatch = (_LastSender!= null && image.Tag ==_LastSender.Tag);
_LastSender= sender;
if (senderMatch && quickClick && position.Distance(_LastPosition) <= k_MaxMoveDistance)
{
// Double click!
_LastClickTicks = 0;
_LastSender= null;
return true;
}
// Not a double click
_LastClickTicks = clickTicks;
_LastPosition = position;
if (!quickClick)
_LastSender = new WeakReference(sender);
return false;
}
private static double Distance(this Point pointA, Point pointB)
{
double x = pointA.X - pointB.X;
double y = pointA.Y - pointB.Y;
return Math.Sqrt(x * x + y * y);
}
}
0 0
- 模拟鼠标双击,用于没有鼠标双击控件
- 模拟鼠标的单双击
- 鼠标双击
- Unity: Unity3D 模拟鼠标单击/双击
- 用java代码模拟鼠标双击事件
- Java鼠标双击事件
- Java鼠标双击事件
- 另一种鼠标双击事件
- 判断鼠标双击
- 鼠标双击事件
- 双击鼠标滚动屏幕
- JTree 鼠标双击事件
- silverlight鼠标双击
- silverlight鼠标双击
- 鼠标双击事件
- 鼠标双击变单击
- 实现鼠标双击事件
- 双击鼠标屏幕滚动
- c#操作xml文件
- PowerShell Get-Eventlog Remote Computer
- C#操作Office组件(七)
- stopSelf() vs stopSelf(int) vs stopService(Intent)
- JVM调优总结 + jstat 分析
- 模拟鼠标双击,用于没有鼠标双击控件
- PHP WEB安全摘要
- Ubuntu下安装android studio
- 回调函数的二三事
- 提高selenium自动化的稳定性1-点击空白区域
- 用ldp.exe测试samba4的AD ssl连接
- 文件权限Chmod
- 提高selenium自动化的稳定性2-等待
- PowerCenter 基础