C#开发实例 鼠标篇

鼠标的操作控制:

  鼠标是计算机的一个重要组成部分,有很多默认的设置,如双击时间间隔,闪烁频率,移动速度等,本篇使用C#获取这些基本的信息。

1.1获取鼠标信息

①实例001 获取鼠标双击时间间隔

主要用到的API函数为GetDoubleClickTime。函数主要用来判断连续2次鼠标单击之间会被处理成双击的时间间隔。

主要程序代码如下:

1         [DllImport("user32.dll", EntryPoint = "GetDoubleClickTime")]
2
3         public static extern int GetDoubleClickTime();
4
5         private void Frm_Main_Load(object sender, EventArgs e)
6         {
7
8             label1.Text = GetDoubleClickTime() + "毫秒";
9         }

②实例002 获取光标闪烁频率

主要用到的API函数为GetCaretBlinkTime,获取光标闪烁的时间,返回值为int类型,毫秒为单位。

1         [DllImport("user32.dll", EntryPoint = "GetCaretBlinkTime")]
2
3         public static extern int GetCaretBlinkTime();
4
5         private void Frm_Main_Load(object sender, EventArgs e)
6         {
7
8             label1.Text = GetCaretBlinkTime() + "毫秒";
9         }

③实例003 获取鼠标键数

鼠标种类多种多样,除了左右键,还有滚轮,有的带功能键,主要用到的API函数为GetSystemMetrics,intcount指定欲获取的信息。

 1         public const int SM = 43;
 2
 3         [DllImport("user32.dll", EntryPoint = "GetSystemMetrics")]
 4
 5         public static extern int GetSystemMetrics(int intcount);
 6
 7         private void Frm_Main_Load(object sender, EventArgs e)
 8         {
 9             int intCon = GetSystemMetrics(SM);
10             label1.Text = "鼠标键数" + intCon + "个";
11         }

④实例004 显示鼠标等待光圈

主要用到了Form类的Cursor属性,Cursor属性主要用来获取或设置当鼠标指正位于窗体上时显示的光标。

1         private void Frm_Main_Load(object sender, EventArgs e)
2         {
3             this.Cursor = Cursors.WaitCursor;
4         }

⑤获取鼠标在窗体上的位置

获取鼠标位置在开发过程中很重要,通过单击鼠标获取鼠标的当前位置。主要用到MouseEventArgs类的X和Y属性,MouseEventArgs类为MouseUp、MouseDown、MouseMove事件提供数据。

1         private void Frm_MouseDown(object sender, MouseEventArgs e)
2         {
3             this.label1.Text = e.X.ToString;
4             this.label2.Text = e.Y.ToString;
5         }

⑥记录鼠标行为

⑦通过截取系统消息判断鼠标的单击键

1.2鼠标基本设置

①鼠标指针形状

鼠标的指针经常会有多种样式,如“等待”,打开链接的“小手”。本实例是将鼠标放到label上显示小手。

1       this.label1.Cursor = Cursors.Hand;

②鼠标的图形样式

用户使用鼠标时,为了美观,自定义鼠标图片。

1         private void button1_Click(object sender, EventArgs e)
2         {
3             this.Cursor = new Cursor("pen_il.cur");   //改变鼠标图片
4         }

③左右键互换功能

在控制面板中,用户可以对鼠标做相应的设置,在这里左右键互换用到的API函数为SwapMouseButton。在SwapMouseButton()中,返回为真交换左右键,否则恢复正常。

 1         [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SwapMouseButton")]
 2
 3         public static extern int SwapMouseButton(int bSwap);
 4
 5         public void DefultRightButton()
 6         {
 7             SwapMouseButton(1);
 8         }
 9         public void DefultLeftButton()
10         {
11             SwapMouseButton(0);
12         }
13
14         private void button1_Click(object sender, EventArgs e)
15         {
16             this.DefultLeftButton();
17         }
18         private void button2_Click(object sender, EventArgs e)
19         {
20             this.DefultRightButton();
21         }

④固定鼠标控制区域

在实际应用中,有时候要限制鼠标的移动区域,让其只能在某一区域移动。

 1         private void button1_Click(object sender, EventArgs e)
 2         {
 3             this.Cursor = new Cursor(Cursor.Current.Handle);
 4             Cursor.Position = new Point(Cursor.Position.X, Cursor.Position.Y);
 5             Cursor.Clip = new Rectangle(this.Location, this.Size);
 6         }
 7         private void button2_Click(object sender, EventArgs e)
 8         {
 9             Screen[] screens = Screen.AllScreens;
10             this.Cursor = new Cursor(Cursor.Current.Handle);
11             Cursor.Clip = screens[0].Bounds;
12         }

1.3鼠标操作在实际中的应用

①隐藏鼠标按钮

在实际应用中,有时候会将鼠标隐藏,通过使用键盘来操作。主要用到的API函数是ShowCursor。ShowCursor(bool bShow);bshow为true显示指针,如果为false隐藏指针。

 1         [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "ShowCursor")]
 2         public static extern bool ShowCursor(bool bShow);
 3
 4         private void button1_Click(object sender, EventArgs e)
 5         {
 6             ShowCursor(false);//隐藏鼠标
 7         }
 8         private void button2_Click(object sender, EventArgs e)
 9         {
10             ShowCursor(true);//显示鼠标
11         }

时间: 2024-11-14 13:06:14

C#开发实例 鼠标篇的相关文章

jquery mobile自定义webapp开发实例(一)——前言篇

用jquery mobile做了一段时间的webapp开发,准备用自己的一个小demo做一个模块化的分享 点击demo演示 手机演示二维码: 此demo已经是比较老的版本,用户体验流畅度确实还存在很大的问题,但在我写这一系列的webapp开发实例后,将会解决大部分问题 下面是以后准备写到的一些点: 1:谈谈关于jquery mobile 一些常见问题的解决.(常见问题的解决查看) 2:jquery mobile实现多页面跳转(不是官网上那样把所以的page在一个.html文件内,而是每个page

Bluetooth篇 开发实例之九 和蓝牙模块通信

首先,我们要去连接蓝牙模块,那么,我们只要写客户端的程序就好了,蓝牙模块就相当于服务端. 连接就需要UUID. #蓝牙串口服务SerialPortServiceClass_UUID = ‘{00001101-0000-1000-8000-00805F9B34FB}’ 第一步: 首先要连接设备.这个参考Android Developer的例子来写:Android Developer -- Bluetooth篇 开发实例之二 连接设备 private class ConnectThread exte

jquery mobile自己定义webapp开发实例(一)——前言篇

用jquery mobile做了一段时间的webapp开发,准备用自己的一个小demo做一个模块化的分享 点击demo演示 手机演示二维码: 此demo已经是比較老的版本号,用户体验流畅度确实还存在非常大的问题,但在我写这一系列的webapp开发实例后,将会解决大部分问题 以下是以后准备写到的一些点: 1:谈谈关于jquery mobile 一些常见问题的解决.(常见问题的解决查看) 2:jquery mobile实现多页面跳转(不是官网上那样把所以的page在一个.html文件内,而是每一个p

Bluetooth篇 开发实例之八 匹配

自己写的App匹配蓝牙设备,不需要通过系统设置去连接. 匹配和通信是两回事. 用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在SDK中给出.但是可以通过反射来获取. Method[] hideMethod2 =BluetoothDevice.class.getMethods(); int k = 0; for (; k < hideMethod2.length; k++) { Log.e("BluetoothDevice

C#软件开发实例.私人订制自己的屏幕截图工具(七)添加放大镜的功能

上一篇:C#软件开发实例.私人订制自己的屏幕截图工具(六)添加配置管理功能 由于截图时可能需要精确截取某一部分,所以需要放大镜的功能,这样截取的时候才更容易定位截图的位置. 添加PictureBox,name属性设置为"pictureBox_zoom": 在"Form1_Load"事件处理函数中添加以下代码: //设置放大镜的大小 this.pictureBox_zoom.Width = this.ZoomBoxWidth; this.pictureBox_zoom

C#软件开发实例.私人订制自己的屏幕截图工具(八)添加键盘操作截图的功能

上一篇:C#软件开发实例.私人订制自己的屏幕截图工具(七)添加放大镜的功能 虽然添加了放大镜的功能,但是在进行像素级的定位时,还是不容易精确定位,在用鼠标操作时要改变一两个像素的位置还是有些困难的. 处理键盘按下事件 /// <summary> /// 处理键盘按下事件 /// 用于实现以下功能: /// 当用户按下Esc键时,退出截图过程: /// Shift + Enter 开始截图的功能: /// 使用键盘的上下左右键调整截图位置的功能: /// Shift + 上下左右键调整截图区域大

Cocos2d-x 3.X手游开发实例详解

Cocos2d-x 3.X手游开发实例详解(最新最简Cocos2d-x手机游戏开发学习方法,以热门游戏2048.卡牌为例,完整再现手游的开发过程,实例丰富,代码完备,Cocos2d-x作者之一林顺和泰然网创始人杨雍力荐) 于浩洋 著   ISBN 978-7-121-23998-4 2014年9月出版 定价:59.00元 356页 16开 编辑推荐 以Cocos2d-x V3.0为框架全面讲解手游开发的知识和方法 以热门游戏2048.卡牌为例,完整再现手游的开发过程 Cocos2d-x作者之一林

《HTML 5网页开发实例详解》目录

第一篇  从宏观上认识HTML 5 讲述了HTML 5引发的Web革命.HTML 5的整体特性.HTML 5相关概念和框架和开发环境搭建. 第1章 HTML 5引发的Web革命 1.1  你是不是真的了解HTML 5 1.1.1  通过W3C认识HTML 5的发展史 1.1.2  HTML 5.HTML4.XHTML的区别 1.1.3  什么人应该学HTML 5 1.1.4  一个图告诉你如何学习HTML 5 1.2  浏览器之争 1.2.1  说说这些常见的浏览器 1.2.2  浏览器的兼容烦

ZabbixAPI+django+nginx简单的二次开发实例(三)

接上一篇博文 ZabbixAPI+django+nginx简单的二次开发实例(二) 步骤三,站点架构部分 本部分用到的软件 1,Nginx:接受访问请求,应答静态页面,转发动态请求至uwsgi 2,uwsgi:应答动态请求 3,Django:处理后台数据 4,supervisor:管理进程 首先安装Nginx yum install epel-release yum install python-devel nginx 修改配置文件 vim /etc/ngnix/ngnix.conf user