原文:wpf 判断鼠标在一段时间内是否移动

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/config_man/article/details/7484257

有触摸屏,xp系统,代码:

方法一:

    class Win32
{
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int X;
public int Y; public POINT(int x, int y)
{
this.X = x;
this.Y = y;
}
} [DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool GetCursorPos(out POINT pt);
} /// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
int x, y;
DispatcherTimer timer = new DispatcherTimer(); public MainWindow()
{
InitializeComponent();
setButtonStyle(); timer.Tick += new EventHandler(timer_Tick);
timer.Interval = new TimeSpan(0, 0, 10); //10秒后开始运行
} void timer_Tick(object sender, EventArgs e)
{
Win32.POINT pi = new Win32.POINT();
Win32.GetCursorPos(out pi); int _x = pi.X;
int _y = pi.Y; if ((x + 4 == _x) && (y + 3 == _y))
{
timer.IsEnabled = false; if (MessageBoxResult.Yes == MessageBox.Show("确定退出吗?", "友情提示", MessageBoxButton.YesNo))
{
this.Close();
}
}
} //鼠标左键按下时
private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
//鼠标按下时获取当前鼠标坐标
x = (int)(Mouse.GetPosition(e.Source as FrameworkElement).X);
y = (int)(Mouse.GetPosition(e.Source as FrameworkElement).Y); timer.IsEnabled = true;
}
//鼠标右键按下时
private void Window_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
x = -1;
y = -1;
timer.IsEnabled = false;
}
}

方法二:

    /// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
int x, y;
DispatcherTimer timer = new DispatcherTimer();
DispatcherTimer timer2 = new DispatcherTimer();
DateTime start; public MainWindow()
{
InitializeComponent();
setButtonStyle(); timer.Tick += new EventHandler(timer_Tick);
timer.Interval = new TimeSpan(0, 0, 1);
timer.Start(); timer2.Tick += new EventHandler(timer2_Tick);
timer2.Interval = new TimeSpan(0, 0, 2);
timer2.Start();
} void timer_Tick(object sender, EventArgs e)
{
timer.Stop();
x = (int)(Mouse.GetPosition(this).X);
y = (int)(Mouse.GetPosition(this).Y);
} bool ff = true;
void timer2_Tick(object sender, EventArgs e)
{
int _x = (int)(Mouse.GetPosition(this).X);
int _y = (int)(Mouse.GetPosition(this).Y); if ((x == _x) && (y == _y) && ff)
{
start = DateTime.Now;
ff = false;
}
if (x != _x || y != _y)
{
x = _x;
y = _y;
start = DateTime.Now;
ff = true;
} TimeSpan ts = DateTime.Now.Subtract(start); //鼠标或键盘误动作3分钟后开始播放视频
if (ts.Minutes >= 3)
{
//MessageBox.Show("x:" + x.ToString() + ";y:" + y.ToString() + "\n _x:" + _x.ToString() + ";_y=" + _y.ToString()+"\n"+ff.ToString().ToString() + " " + ts.Hours.ToString() + " " + ts.Minutes.ToString() + " " + ts.Seconds.ToString());
//关闭所有子窗体
WindowCollection windows = Application.Current.Windows;
foreach(Window window in windows)
{
string title = window.Title;
if(title != "MainWindow")
{
window.Close();
}
}
} }
  }

wpf 判断鼠标在一段时间内是否移动的更多相关文章

  1. 在WPF中弹出右键菜单时判断鼠标是否选中该项

      和上篇在WPF的TreeView中实现右键选定一样,这仍然是一个右键菜单的问题: 这个需求是在一个实现剪贴板的功能的时候遇到的:在弹出右键菜单时,如果菜单弹出位置在ListViewItem中时,我 ...

  2. WPF 使用鼠标拖动一个控件的实现[2018.7.15]

    原文:WPF 使用鼠标拖动一个控件的实现[2018.7.15] Q:已经把一个Shape和一个TextBlock组合起来放到了一个Grid中,现在想要实现用鼠标拖动这个Grid到任意位置的功能,如何做 ...

  3. [WPF]自定义鼠标指针

    原文:[WPF]自定义鼠标指针 [WPF]自定义鼠标指针 周银辉 看看WPF Cursor类的两个构造函数吧:  * f));            g.Flush();            g.D ...

  4. JS判断鼠标进入容器方向的方法和分析window.open新窗口被拦截的问题

    1.鼠标进入容器方向的判定 判断鼠标从哪个方向进入元素容器是一个经常碰到的问题,如何来判断呢?首先想到的是:获取鼠标的位置,然后经过一大堆的if..else逻辑来确定.这样的做法比较繁琐,下面介绍两种 ...

  5. js判断鼠标是否停止移动

    本程序实现当鼠标在一个特定的div内悬停n秒时,判断出已经停止移动. 思路: 1.定义全局变量鼠标移动状态imouse,定时器timer.当鼠标在div内移动时,imouse值为1,相反静止时值为0: ...

  6. js判断鼠标向上滚动并浮动导航

    <div id="Jnav"> <ul class="nav"> <li><a href="#"& ...

  7. storm入门(二):关于storm中某一段时间内topN的计算入门

    刚刚接触storm 对于滑动窗口的topN复杂模型有一些不理解,通过阅读其他的博客发现有两篇关于topN的非滑动窗口的介绍.然后转载过来. 下面是第一种: Storm的另一种常见模式是对流式数据进行所 ...

  8. JS判断鼠标移入元素的方向

    最终效果 这里的关键主要是判断鼠标是从哪个方向进入和离开的 $("li").on("mouseenter mouseleave",function(e) { v ...

  9. Matlab判断鼠标移动

    set(gcf,'WindowButtonMotionFcn',@get_cur_positon); 其中第二项是判断鼠标移动的属性参数,第三项为回调函数 et. main.m clear;clc;s ...

随机推荐

  1. hibernate---java.lang.UnsupportedOperationException: The user must supply a JDBC connection

        在配置hibernate时.运行代码时一直抛错: Exception in thread "main" java.lang.UnsupportedOperationExce ...

  2. [ES7] Await multi promises sequentially or concurrently

    Somtime 'async await' can have a bad effect on code proferemence. Let's take a look the below exampl ...

  3. ios开发核心动画七:核心动画与UIView动画的区别

    /** UIView与核心动画区别?(掌握) 1.核心动画只作用在layer. 2.核心动画看到的都是假像,它并没有去修改UIView的真实位置. 什么时候使用核心动画? 1.当不需要与用户进行交互, ...

  4. 在线算法与离线算法(online or offline)

    1. 在线算法(online) PFC(prefix-free code)编码树的解码过程:可以在二进制编码串的接收过程中实时进行,而不必等到所有比特位都到达后才开始: 2. 离线算法(offline ...

  5. 【34.14%】【BZOJ 3110】 [Zjoi2013]K大数查询

    Time Limit: 20 Sec Memory Limit: 512 MB Submit: 5375 Solved: 1835 [Submit][Status][Discuss] Descript ...

  6. Linux下图形界面调试工具kdbg安装及測试

    1.Ubuntu系统下安装 Ubuntu系统安装比較方便,直接apt-get即可 apt-get install kdbg 2.centos 安装 首先,在这个地址下下载rpm包.然后使用rpm命令安 ...

  7. 【u003】计算概率

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 小明有n个长度不一的小木棍,这些木棍的长度都是正整数.小明的父亲想和小明做一个游戏.他规定一个整数长度 ...

  8. kali 系统的源

    sources.list deb http://http.kali.org/kali kali-rolling main non-free contrib deb http://mirrors.ust ...

  9. MySQL crash-safe replication

    MySQL数据库的成功离不开其replicaiton,相对于Oracle DG和Microsoft SQL Server Log Shipping来说,其简单易上手,基本上1,2分钟内根据手册就能完成 ...

  10. js进阶 9-8 html标签如何实现禁止复制和粘贴

    js进阶 9-8  html标签如何实现禁止复制和粘贴 一.总结 一句话总结: 1.在oncopy方法中return false即可阻止在控件中复制内容 2.在onpaste方法中return fal ...