6

首先,鼠标滚轮事件没有列在 Visual Studio 2008 的事件窗格中,这很烦人。

我在网上找到了正确的格式,并将其写入我的代码:

    private void Form1_MouseWheel(object sender, MouseEventArgs e)
    {
        Debug.WriteLine("Foo");
    }

...旋转鼠标滚轮时我没有得到任何响应。

我在我的代码的主类区域中执行此操作,并且设计器仅包含一个表单/窗口/任何内容,因此鼠标不会失去焦点。

namespace BlahBlah
{
    public partial class Form1 : Form
    {

相比之下,我在鼠标滚轮上方有这个方法,它工作正常:

    private void Form1_MouseClick(object sender, MouseEventArgs e)
    {
        Debug.WriteLine("Foo");
    }

如果我不得不猜测,我认为我没有正确地将代码链接到表单(又名:如果我通过设计器的事件面板添加此事件,Visual Studio 将为我做的所有事情)。但我可能是错的,或者只是犯了一些愚蠢的错误。

当鼠标滚轮旋转时,你能帮我得到任何回应吗?谢谢!

4

4 回答 4

12

鼠标滚轮事件需要设置。

将此添加到 Form1 的构造函数(在 InitalizeComponents(); 之后)

this.MouseWheel+= new MouseEventHandler(Form1_MouseWheel);
于 2009-07-27T19:40:22.117 回答
6

我没有足够的声誉来发表评论,但您的附带问题的答案是确实需要设置代表。但是,当您通过在属性窗格中双击它来创建一个时,代码会自动生成并放置在 InitializeComponent 方法中的 *.designer.cs 文件中。

于 2009-07-27T19:55:28.873 回答
1

我不知道如何订阅该特定事件,但您可以改写表单上的适当方法。

于 2009-07-27T19:40:21.073 回答
1

在这种情况下,最好覆盖OnMouseWheel成员函数而不是注册到事件。例如:

public class MyFrm : Form
{
    protected override void OnMouseWheel(MouseEventArgs e)
    {
        /*Handle the mouse wheel here*/
        base.OnMouseWheel(e);
    }
}
于 2012-04-13T19:29:47.393 回答