C#中鼠标键盘响应机制

本文详细介绍了C#中如何处理鼠标和键盘事件。对于鼠标事件,包括MouseHover、MouseLeave、MouseEnter、MouseMove、MouseDown和MouseUp,分别在EventHandler和MouseEventHandler上定义。键盘事件主要包括KeyDown、KeyUp和KeyPress,对应的Delegate分别为KeyEventHandler和KeyPressEventHandler。文章通过实例代码展示了如何添加事件处理函数并响应不同类型的鼠标和键盘操作。

【PartI:Mouse Event】
鼠标相关的事件大致有六种,分别在不同的Delegate上定义
EventHandler:"MouseHover"、"MouseLeave"、"MouseEnter"
MouseEventHandler:"MouseMove"、"MouseDown"和"MouseUp"
分别封装在System和System.Windows.Froms命名空间,通过数据的类分别是EventArgs和MouseEventArgs

前三个事件响应机制:"组件名称"."事件名称"+= new System.EventHandler("事件名称");
button1.MouseLeave += new Syetem.EvenHandler(button1_MLeave);
private void button1_MLeave ( object sender , System.EventArgs e )
{
   //此处加入响应此事件的代码
}

 

后三个事件响应机制:"组件名称"."事件名称"+= new System.Windows.Forms. MouseEventHandler("事件处理");
button.MouseDown += new System.Windows.Form.EventHandler(button_MDown);
private void button_MDown(object sender, System.MouseEventArgs e)
{
   //此处加入响应此事件的代码
}


private void Form1_OnMouseMove ( object sender , MouseEventArgs e )
{
   this.Text = "当前鼠标的位置为:( " + e.X + " , " + e.Y + ")" ;
}

private void Form1_MouseDown ( object sender , MouseEventArgs e )
{
  //响应鼠标的不同按键
  if ( e.Button == MouseButtons.Left )
  {
 MessageBox.Show ( "按动鼠标左键!" ) ;
  }
  if ( e.Button == MouseButtons.Middle )
  {
 MessageBox.Show ( "按动鼠标中键!") ;
  }
  if ( e.Button == MouseButtons.Right )
  {
 MessageBox.Show ( "按动鼠标右键!") ;
  }
}

 

【PartII:Keyboard Event】
在C#中和键盘相关的事件相对比较少,大致就三种:"KeyDown"、"KeyUp"和"KeyPress"

C#中描述"KeyDown"、"KeyUp"的事件的Delegate是"KeyEventHandler"。而描述"KeyPress"所用的 Delegate是"KeyPressEventHandler"。这二个Delegate都被封装在命名空

间"Syetem.Windows.Froms"中。为"KeyDown"、"KeyUp"的事件提供数据的类是"KeyEventArgs"。而 为"KeyPress"事件提供数据的类是"KeyPressEventArgs"。同样这二者也被封装

在命名空 间"Syetem.Windows.Froms"中。

在C#程序定义"KeyDown"、"KeyUp"事件的语法如下:
"组件名称"."事件名称"+= new Syetem.Windows.Froms.KeyEventHandler("事件名称");
button1.KeyDown += new Syetem.Windows.Froms.KeyEventArgs(button1_KDown);
private void button1_KUp ( object sender , Syetem.Windows.Froms. KeyEventArgs e )
{
 //此处加入响应此事件的代码
}


在C#程序定义"KeyPress"事件的语法如下:
"组件名称"."事件名称"+= new Syetem.Windows.Froms.KeyPressEventHandler("事件名称");
button1.KeyPress += new Syetem.Windows.Froms.KeyPressEventArgs(button1_KPress);
private void button1_KPress ( object sender , Syetem.Windows.Froms.KeyPressEventArgs e )
{
 //此处加入响应此事件的代码
}


附上一段代码:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

public class Form1 : Form
{
    private System.ComponentModel.Container components = null;

    public Form1()
    {
        //初始化窗体中的各个组件
        InitializeComponent();
    }
    //清除程序中使用过的资源
    protected override void Dispose(bool disposing)
    {
        if (disposing)
        {
            if (components != null)
            {
                components.Dispose();
            }
        }
        base.Dispose(disposing);
    }
    private void InitializeComponent()
    {
        this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
        this.ClientSize = new System.Drawing.Size(292, 273);
        this.Name = "Form1";
        this.Text = "C#处理鼠标按动事件!";
        //为鼠标按动定义一个事件处理过程"Form1_MouseDown"
        this.MouseDown += new MouseEventHandler(Form1_MouseDown);
        //为鼠标移动定义一个事件处理过程"Form1_MouseMove"
        this.MouseMove += new MouseEventHandler(Form1_OnMouseMove);

        //为键盘按键按下与释放定义一个处理过程
        this.KeyUp += new KeyEventHandler(Form1_KeyUp);
        this.KeyDown+=new KeyEventHandler(Form1_KeyDown);
        this.KeyPress += new KeyPressEventHandler(Form1_KeyPress);

    }
    static void Main()
    {
        Application.Run(new Form1());
    }
    private void Form1_OnMouseMove(object sender, MouseEventArgs e)
    {
        this.Text = "当前鼠标的位置为:( " + e.X + " , " + e.Y + ")";
    }

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        //响应鼠标的不同按键
        if (e.Button == MouseButtons.Left)
        {
            MessageBox.Show("按动鼠标左键!");
        }
        if (e.Button == MouseButtons.Middle)
        {
            MessageBox.Show("按动鼠标中键!");
        }
        if (e.Button == MouseButtons.Right)
        {
            MessageBox.Show("按动鼠标右键!");
        }
    }

    public void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        MessageBox.Show(e.KeyCode.ToString(), "您所按下的健为:");
    }

    public void Form1_KeyUp(object sender, KeyEventArgs e)
    {
        MessageBox.Show(e.KeyCode.ToString(), "您所按下的健为:");
    }

    public void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        MessageBox.Show(e.KeyChar.ToString(), "Pressed Key");
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值