范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

C程序设计鼠标和键盘

  一、获取鼠标的窗体/屏幕坐标
  protected override void OnMouseMove(MouseEventArgs e) {     Point clientMouse = e.Location; //相对窗体坐标     Point screenMouse = PointToScreen(clientMouse); //相对屏幕坐标     this.Text = string.Format("鼠标窗体坐标:({0},{1}) 鼠标屏幕坐标:({2},{3})",     clientMouse.X, clientMouse.Y, screenMouse.X, screenMouse.Y); }
  该实例重写了鼠标移动事件函数OnMouseMove,利用参数e获取窗体坐标,利用PointToScreen方法获取屏幕坐标。二、鼠标长时间按下事件
  鼠标持续按下2秒,弹窗public partial class Form1 : Form {     Timer timer = new Timer(); //创建实例     int timeout = 0; //超时时间     MouseEventArgs LongDown; //鼠标长时间按下事件参数     public Form1()//窗体构造函数     {         InitializeComponent();         timer.Interval = 1000; //定时器间隔,单位毫秒         timer.Tick += new EventHandler(timer_Tick); //注册timer_Tick事件     }     void timer_Tick(object sender, EventArgs e)//每个间隔执行一次     {         if (++timeout == 2) OnMouseLongDown(this.LongDown);          //鼠标按下2秒,调用长时间按下事件     }     protected override void OnMouseDown(MouseEventArgs e)     {         this.LongDown = e; //鼠标按下事件参数         this.Cursor = Cursors.Hand; //鼠标按下为手型         timeout = 0;  //超时时间清0         timer.Start(); //计时器启动     }     protected override void OnMouseUp(MouseEventArgs e)     {         this.Cursor = Cursors.Arrow;//鼠标松开为箭头         timer.Stop(); //计时器停止     }     protected virtual void OnMouseLongDown(MouseEventArgs e)     {         MessageBox.Show("鼠标被长时间按下!");     } }
  鼠标按下,启动定时器;
  鼠标抬起,停止定时器;
  定时器计时后,每秒timeout加1,达到设定时间后触发函数OnMouseLongDown,弹窗。三、根据区域设置鼠标类型
  四个区域,对应四种鼠标图标protected override void OnMouseMove(MouseEventArgs e) {       if (e.X < ClientSize.Width / 2)           if (e.Y < ClientSize.Height / 2)               this.Cursor = Cursors.Hand; //左上,鼠标为手形图标           else               this.Cursor = Cursors.Help; //左下,鼠标为帮助图标       else           if (e.Y < ClientSize.Height / 2)               this.Cursor = Cursors.WaitCursor; //右上,鼠标为等待图标           else               this.Cursor = Cursors.Cross; //右下,鼠标为十字型图标 }
  该实例通过修改窗体的Cursor对象实现鼠标样式的改变。四、创建鼠标图标
  protected override void OnLoad(EventArgs e) {     Bitmap icon = new Bitmap(100,100);//鼠标图标的大小     Graphics G = Graphics.FromImage(icon); //创建新的绘图     G.SmoothingMode = SmoothingMode.AntiAlias; //消除锯齿     G.Clear(Color.Transparent); //图标背景设为透明     G.FillPie(new SolidBrush(Color.FromArgb(255, Color.Red)) //绘制扇形作为鼠标指针     , new Rectangle(0, 0, icon.Width, icon.Height), 30f, 30f);     G.Dispose(); //释放绘图表面     this.Cursor = new Cursor(icon.GetHicon()); //设置新的鼠标对象     icon.Dispose(); }
  该实例利用绘制图标自定义鼠标的图标:
  1、创建了一个100x100位图对象;
  2、在位图中绘制一个扇形形状作为鼠标指针;
  3、通过GetHicon方法获取图标句柄,并创建Cursor对象。五、限制鼠标活动范围
  抬起,活动范围全屏;按下,活动范围窗体protected override void OnMouseDown(MouseEventArgs e)//鼠标按下 {     this.Text = "鼠标按下,活动范围限制为窗体";     Cursor.Clip = new Rectangle(this.Location, this.Size); } protected override void OnMouseUp(MouseEventArgs e)//鼠标抬起 {     this.Text = "鼠标抬起,活动范围无限制";     Rectangle clip = new Rectangle();     foreach (var item in Screen.AllScreens) //遍历所有屏幕         clip = Rectangle.Union(clip, item.Bounds);//包含所有屏幕的最小矩形     Cursor.Clip = clip; }
  该实例通过调用Cursor类的Clip属性(Rectangle类型)来设置鼠标的活动区域。六、隐藏和显示鼠标指针
  按下:隐藏;抬起:显示protected override void OnMouseDown(MouseEventArgs e) {     this.Text = "鼠标按下:隐藏";     Cursor.Hide(); //隐藏鼠标 } protected override void OnMouseUp(MouseEventArgs e) {     this.Text = "鼠标抬起:显示";     Cursor.Show(); //显示鼠标 }
  该实例通过调用Cursor类的Hide和Show方法来实现鼠标的隐藏与显示。七、利用鼠标进行书写
  bool isMouseDown = false; //声明Bool变量:鼠标是否按下 Point pointMouse = new Point();//鼠标上一时刻的坐标 protected override void OnMouseDown(MouseEventArgs e) {     pointMouse = e.Location; //鼠标上一时刻坐标     isMouseDown = true; //鼠标已经按下 } protected override void OnMouseMove(MouseEventArgs e) {     if (isMouseDown)     {         using (Graphics G = this.CreateGraphics()) //获取窗体绘制表面         {             G.SmoothingMode = SmoothingMode.AntiAlias; //消除锯齿             using (Pen pen = new Pen(Color.Red, 3f)) //创建宽度为3像素的黑色画笔             {                 G.DrawLine(pen, pointMouse, e.Location); //绘制连接两个坐标的线段                 pointMouse = e.Location; //重新设置鼠标坐标             }         }     } } protected override void OnMouseUp(MouseEventArgs e) {     isMouseDown = false; //鼠标未按下 } private void button1_Click(object sender, EventArgs e) {     this.Invalidate();//清屏 }
  该实例通过利用DrawLine方法绘制连续的线段实现书写。
  鼠标按下,把实时坐标赋值给pointMouse;
  鼠标按下并移动,绘制当前点与pointMouse之间的线段;
  鼠标抬起,停止绘制。八、按下组合键实现窗体全屏
  Ctrl+Enter组合键实现全屏缩放protected override void OnKeyDown(KeyEventArgs e) {     if (e.KeyData == (Keys.Control | Keys.Enter)) //判断键盘按键类型     {         if (this.WindowState == FormWindowState.Maximized) //判断窗体是否最大化         {             this.WindowState = FormWindowState.Normal; //窗体还原         }         else if (this.WindowState == FormWindowState.Normal)//判断窗体是否默认大小         {             this.WindowState = FormWindowState.Maximized; //窗体最大化         }     } }
  该实例通过函数OnKeyDown的KeyEventArgs参数对象的KeyData属性来获取键盘按下的键。通过判断属性值是否为Ctrl+Enter组合键的值来决定是否将窗体最大化。九、屏蔽Alt+F4组合键
  protected override void OnKeyDown(KeyEventArgs e) {     if (e.KeyData == (Keys.Alt | Keys.F4))     {         MessageBox.Show("Alt+F4组合键已被屏蔽,无法关闭当前窗体!");         e.Handled = true; //标记为已处理状态     } }
  如果检测到Alt+F4组合键按下,则将参数对象KeyEventArgs的Handled属性设置为true,标记Alt+F4组合键消息已经被处理过。十、使用Shift+方向键调整窗体大小
  "Shift+方向"组合键,调节窗体大小protected override void OnKeyDown(KeyEventArgs e) {     if (e.KeyData == (Keys.Shift | Keys.Left)) this.Width -= 10; //减小宽度     if (e.KeyData == (Keys.Shift | Keys.Right)) this.Width += 10; //增加宽度     if (e.KeyData == (Keys.Shift | Keys.Up)) this.Height -= 10; //减小高度     if (e.KeyData == (Keys.Shift | Keys.Down)) this.Height += 10; //增加高度     this.Text = "使用Shift+方向键调整窗体大小" + string.Format("({0},{1})", this.Width, this.Height); }十一、录制并回放鼠标移动轨迹
  按下Ctrl,记录鼠标轨迹;抬起Ctrl,绘制记录的轨迹Queue mousePoints = new Queue(); //保存鼠标轨迹 bool isCtrlDown = false; //标记Ctrl键是否按下 protected override void OnKeyDown(KeyEventArgs e) {     if (e.KeyData == (Keys.LButton | Keys.ShiftKey | Keys.Control))     {//判断Ctrl键按下         isCtrlDown = true; //标记Ctrl键按下         timer1.Start(); //启动计时器     } } private void timer1_Tick(object sender, EventArgs e) {     if (isCtrlDown) mousePoints.Enqueue(Cursor.Position); //添加轨迹     else if (mousePoints.Count > 0) //鼠标轨迹数大于0     {         Cursor.Position = mousePoints.Dequeue(); //从轨迹中取出一个点设置为鼠标当前值         Graphics g = this.CreateGraphics(); //获取窗体绘图表面                                    Cursor.Draw(g, new Rectangle(PointToClient(Cursor.Position), Cursor.Size)); //绘制鼠标图标         g.Dispose();     }     else timer1.Stop(); //停止录像或回放 } protected override void OnKeyUp(KeyEventArgs e) {     if (e.KeyData == (Keys.LButton | Keys.ShiftKey)) //判断Ctrl键抬起         isCtrlDown = false; //标记Ctrl键抬起 }
  Ctrl键按下,启动计时器,将鼠标的实时位置添加到鼠标轨迹中。
  Ctrl键抬起,将记录的鼠标轨迹逐一出队,调用Cursor的Draw方法来绘制鼠标的动作轨迹,停止计时器。十二、模拟键盘输入
  private void button1_Click(object sender, EventArgs e)//按钮1,输入字符 {     textBox1.Focus(); //获取文本框焦点     SendKeys.Send("1234ABCD - ");     SendKeys.Flush(); //处理所有的Windows消息 } private void button2_Click(object sender, EventArgs e)//按钮2,退格 {     textBox1.Focus();     SendKeys.Send("{BS}");     SendKeys.Flush(); } private void button3_Click(object sender, EventArgs e)//按钮3,输入10个A {     textBox1.Focus();     SendKeys.Send("{A 10}");     SendKeys.Flush(); } private void button4_Click(object sender, EventArgs e)//按钮4,输入Alt+F4键 {     MessageBox.Show("窗口即将关闭!");     SendKeys.Send("%{F4}"); }
  通过SendKeys类的Send方法来实现向当前获取焦点的控件发送键盘按键。
  参考:《C#程序设计经典300例》

走颐和清漪,赏皇家园林之十三昆明湖西堤(上)清代皇上从康熙开始就喜下江南,乾隆追随其祖至杭州,看上了西湖景色,就仿西湖景观意境建了清漪园。在清漪园建造期间,老乾去了三次江南。每一次去杭州都随身带了宫廷画师董邦达的西湖十景图,有这几条自驾线,江浙沪人再也不羡慕其他人了朋友们大家好哇,前段时间我给大家分享了318川藏线和西北环线自驾攻略。这两条线景色是真的美,集合了高山湖泊草原一路上眼睛都是享受,不过毕竟行程远,对时间也有很高要求,没有个十天半个2018年他在旅游时挖到一棵仙人掌,结果4个月后出价167万都不肯卖这世上真的是无奇不有,大家相信吗?2018年,美国一位青年在秘鲁旅游的时候,意外挖到一棵奇怪的仙人掌,结果过了4个月后,有人出价167万,他居然都不肯卖。这听起来是不是让人觉得有些去江西旅游,若带上这5道特产回家,商家都以为你是江西老表导语去江西旅游,若带上这5道特产回家,商家都以为你是江西老表每个城市都有属于自己的特产,虽然疫情阻挡了我们想四处旅游的脚步,但无法阻挡我们去了解那些旅游城市独特的特产,它们也是代表未婚先孕的女星现状有人遭到粉丝唾弃,有人害了孩子一生娱乐圈乱象频发,各种怪事屡见不鲜,特别是对女星们来说,未婚先孕这种事十分常见。而且,这些女星未婚先孕的理由也是五花八门,有的人是一时冲,有的人是出于真爱,还有的人是单纯为了套牢男人东北边陲旅游兴市产业富民奋进新征程建功新时代大美边疆光明日报记者刘勇任爽张士英我的家在东北松花江上,那里有森林煤矿,还有那满山遍野的大豆高粱在中国辽阔的版图上,东北三省黑龙江吉林辽宁雄踞鸡首,是重要的老工绍兴迷人的江南水乡,虽为5A景区却不收门票,非常值得旅游提起绍兴,很多人会想起绍兴师爷绍兴黄酒绍兴沈园和陆游唐婉,不过名气最大的还是原名周树人的鲁迅先生。鲁迅这个名字之所以扎根于数代人的脑海里是因为他的很多篇文章入选语文教科书。若问绍兴四川泸定地震震中见闻磨西镇的热闹与寂静广场上蓝色的救灾帐篷内,居民们正在吃午餐。远处绿色的山体间,赫然可见大片黄色的山体垮塌痕迹。铅灰色的天空中,救援直升机轰鸣不止。9月6日13时许,经过6个多小时车程,中新网记者终于实拍广州时尚天河位置优越的地下商场,人气可谓经久不衰这里是刘小顺的旅行和生活研究所。众所周知,广州是我国四大一线城市之一,也是一座著名的旅游城市,广州的商业贸易一直都非常发达,因此还被大家称为千年商都。提到广州市的商业中心,熟悉的朋百病皆因痰,除痰先除寒!张仲景留下来的经典方,祛寒温肺又化痰大家好,我是沈医生。百病皆因痰,除痰先除寒,今天分享一个张仲景的方子,只有五味药,可以祛寒化痰,温肺化饮,用药简单,作用可不简单!相信一些了解中医知识的朋友,都听说过这句话怪病皆有汕尾市海丰县激活红色资源传承红色基因中国经济导报中国发展网石培璋鲁利韦记者罗勉报道从汕尾市海丰县了解到,党的十八大以来,该县积极探索红色旅游发展新路,激活红色资源,传承红色基因,浓墨重彩书写红色大文章,以红色文化名片
寻找树王辛达布5月8日,辛达布被确定为中国大陆当时已知的最高树,高约76。8米,它位于墨脱的原始森林,身上长满了附生植物5月18日,中国科学院植物研究所郭柯团队在西藏察隅县察隅河两岸山地发现一棵波音的starliner飞船果然又出了点问题为啥我要说果然?波音的商业载人飞船starliner今天早上发射成功,北京时间5月20日652在卡纳维拉尔角SLC41发射,AtlasVN22火箭把它送到了预定轨道。在飞船发射后的神奇大西北导游示意图在宝鸡首发5月19日,2022年新版神奇大西北导游示意图在5。19中国旅游日宝鸡分会场启动仪式上正式首发,协作区秘书处在活动现场安排了展示和免费派发,受到广泛好评。我国西北地区包括陕西甘肃宁15000个美妆博主,也吹不起这家国货之光从国货之光,到濒临退市,完美日记的母公司逸仙电商只用了一年半的时间。逸仙电商自上市之后便一路高歌猛进,2021年2月10日,市值一度达到160。97亿美元,不过很快便开始下滑,跌跌孙颖莎剪了超短发,见到王皓拍照害羞擦汗!樊振东出镜,被夸可爱5月19日,国乒名帅樊振东主管教练王皓晒出国乒训练动态,让我们看到了新鲜的马龙樊振东王楚钦等男选手,女队奥运冠军孙颖莎也意外出镜,剪了超短发的孙颖莎一度让人认不出来。在王皓晒出的视30岁还能演中学生的女星,我只服这8位!穿上校服,灵气就来了现在的娱乐圈可怪异了,总是有些爱装嫩的演员。比如之前章子怡在上阳赋里的少女,被大家吐槽眼里尽是掩不住的沧桑感,根本没有少女的灵动和清澈。算了,不提他们了,我们还是来看看娱乐圈一直少6步搞定麦克风,别再说不会用啦你在唱歌的时候使用麦克风是有诀窍的。应该说有一些注意事项。今天就要来教大家如何使用麦克风。如果你是表演者的话,这些注意事项也要看第一,那么麦克风应该做什么呢,打开电源不要觉得这件事球形闪电是怎么形成的?你知道闪电还有球形(胖成球的球)的吗?今天我们就趁此机会一起来认识一下球形闪电吧。01球状闪电存在吗?它好像是约有两个拳头大的暗白色火球。后来它靠近了,我看得很清楚。有两次它的外壳向日葵智能插线板P2上手评测远程开关电脑生活如此方便科技的发展,让人们的生活变得简单,变得方便。随着智能手机等产品的大面积普及,如今人们已经全面进入智能生活,在这其中,离不开广大智能硬件的支持。今天,笔者想和大家聊一款智能插线板,就百岁国医大师路志正身康体健,还可以出诊,他的养生方法值得借鉴路志正是有名的国医大师,出生于1920年的他今年102岁了。对于一般的百岁老人来说,这个年纪能够基本自理就是莫大的幸运,很多人这个年纪的老人只能在床上完全靠别人照顾。不过,多年精研晨起第一杯水,很多人没喝对!怎么喝,喝多少,告诉你正确的方法相信大家都听说过早晨起来喝一杯白开水对于身体的新陈代谢有着很好的帮助,所以现在许多人都有清晨起来先喝杯水的习惯,这样既能够促进排便,又能够补充晚间丢失的水分,还能让大脑更快的清醒,