b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

如何在winform下对某键盘输入或者鼠标事件进行相同的操作

电脑杂谈  发布时间:2021-04-28 23:05:57  来源:网络整理

在编写Winform应用程序时,有时无论哪个控件获得焦点,都必须对特定的键盘输入或鼠标事件执行相同的操作。例如,在编写处理图片的应用程序时,希望无论当前哪个控件都具有焦点,当用户向上,向下,向左或向右按​​下时,图片控件的滚动条都将上下移动,左和右。当用户移动鼠标滚轮时,图片始终为“放大或缩小”。如果设置了每个控件的键盘或鼠标事件,将不可避免地导致大量重复工作。在本文中,我将介绍如何在winform下对某些键盘输入或鼠标事件执行相同的操作。

1、键盘事件捕获和重写

首先,键盘操作。为了实现上述功能,我们现在介绍一种winform方法。 ProcessCmdKey。其msdn描述的地址为:msdn ProcessCmdKey简介

从函数名称可以看出,这实际上是设置winform快捷键的函数。

“在消息预处理期间调用此方法以处理命令键。命令键是始终比常规输入键具有优先级的键。命令键的示例包括快捷键和菜单快捷键。此方法必须返回true,以指示已处理命令键,或者为false表示该键不是命令键。仅当控件托管在Windows Forms应用程序中或充当ActiveX控件时,才调用此方法。”

winform 鼠标点击事件_vb鼠标点击事件_textbox鼠标点击事件

上面是msdn对此功能的介绍。这意味着此功能中定义的键盘操作响应事件具有最高优先级,并将在所有键盘响应时间之前执行。如果要在执行事件后执行与键盘输入相关的事件,则返回false(即输入事件被视为未处理),如果要阻止其他响应时间,则返回true(即告诉应用程序我已经处理过的键盘输入,以后不再处理。

因此,使用此功能,您可以很好地屏蔽程序中的其他键盘输入响应事件,从而定义您自己对每个键盘输入的响应。

下面是一个示例:

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            switch (keyData)
            {
                case Keys.Right:
                    MessageBox.Show("Right");
                    return true;
                case Keys.Left:
                    MessageBox.Show("Left");
                    return true;
                case Keys.Up:
                    MessageBox.Show("up");
                    return true;
                case Keys.Down:
                    MessageBox.Show("down");
                    return true;
                case Keys.Space:
                    MessageBox.Show("space");
                    return true;
                case Keys.Enter:
                    MessageBox.Show("enter");
                    return true;
            }
            return false;
        }

textbox鼠标点击事件_winform 鼠标点击事件_vb鼠标点击事件

在实际程序中,您只需要将以上代码添加到winform应用程序的window类中,然后将MessageBox替换为您想要实现的功能即可。

2、对于鼠标事件,以上要求主要是鼠标滚轮的滚动事件。因为鼠标单击,双击和移动事件都与鼠标指针的指向相关,所以不必对所有事件都执行相同的操作。只有鼠标滚轮事件与当前鼠标指针的指向关系不大,对其执行相同的操作具有一定的现实意义。如前所述,在处理图片的应用程序中,无论何种情况,鼠标滚轮的向下移动均对应于放大的图片,而向上滚动则对应于缩小的图片。

此功能使用鼠标事件委托。

具体操作是在初始化窗体时将鼠标滚轮事件委托给自定义函数,代码如下:

 public Form1()
        {
            InitializeComponent();
            this.MouseWheel+= new MouseEventHandler(MyMouseWheel);
        }

第二句意味着将该程序的鼠标滚轮事件绑定到函数MyMouseWheel,然后自行定义MyMouseWheel函数。

我定义的MyMouseWheel函数如下:

 private void MyMouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (e.Delta > 0)
            {
                MessageBox.Show("滚轮向前滚动");
            }
            else
            {
                MessageBox.Show("滚轮向后滚动");
            }
        }

将MessageBox替换为要在特定应用程序中实现的功能。

与该博客相对应的示例的下载地址为:


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-371638-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...