首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何捕捉面板上的鼠标滚轮?

如何捕捉面板上的鼠标滚轮?
EN

Stack Overflow用户
提问于 2010-12-13 22:39:27
回答 5查看 59.7K关注 0票数 26

如何在C#中捕捉面板上的鼠标滚轮?我正在使用WinForms

编辑:

我现在尝试在PictureBox上做这件事。

我的代码:

代码语言:javascript
复制
this.pictureBox1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseClick);    
this.pictureBox1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseClick);
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)  
  {  
    MessageBox.Show("Click");  
  }

单击即可正常工作。惠灵不知道。为什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-12-14 01:33:50

Windows将WM_MOUSEWHEEL消息发送到具有焦点的控件。这不会是Panel,它不是一个可以获得焦点的控件。只要你在面板上放置一个控件,比如说一个按钮,按钮就会获得焦点和消息。

然而,该按钮对消息没有任何作用,它没有什么可滚动的。Windows会注意到这一点,并将消息发送给父进程。这就是面板,现在它将滚动。

您将找到可以在this answer中获得焦点的自定义面板的代码。

更新:请注意,在Windows10中,这一行为已经改变。默认情况下,新的“当我将鼠标悬停在非活动窗口上时滚动它们”选项处于打开状态。使鼠标滚轮的行为与其在浏览器或Office程序中的工作方式更加一致。在此特定情况下,picturebox现在将获得事件。注意这一点。

票数 22
EN

Stack Overflow用户

发布于 2014-09-09 14:50:54

如果您看不到组件上的"MouseWheel“事件,则需要手动创建它。此外,我们需要关注该组件,否则"MouseWheel“事件将不会对该组件起作用。我将向您展示如何为"pictureBox1“创建一个"MouseWheel”事件以及它是如何工作的。

  1. 在构造函数中,在该组件上创建鼠标滚轮事件。

InitializeComponent();this.pictureBox1.MouseWheels +=手动pictureBox1_MouseWheel;

  • CREATE函数。根据我的示例,将其命名为"pictureBox1_MouseWheel“

private void pictureBox1_MouseWheel(object sender,MouseEventArgs e) {//您可以在此处执行任何操作}

  • 在该组件上创建焦点事件(转到PicureBox1中的属性,选择事件,找到" MouseHover“并双击" MouseHover”事件)。

  • 在该MouseHover事件中调用“MouseHover()”;方法。

pictureBox1.Focus();

  • Now运行程序。
票数 37
EN

Stack Overflow用户

发布于 2010-12-13 22:47:04

手动布线..。

代码语言:javascript
复制
this.panel1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseWheel);

private void panel1_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
{
    ///process mouse event
}

更简单的方法是在visual studio中单击面板,转到属性视图面板,选择事件,找到并双击“鼠标滚轮”事件。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4429901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档