Не удается запустить событие MouseWheel в C# Windows Forms

во-первых, событие mousewheel не отображается в области событий 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");
    }

Если бы мне пришлось угадать, я думаю, что я неправильно связываю код с формой (aka: все, что visual studio сделает для меня, если я добавлю это событие через панель событий дизайнера). Но я могу ошибаться или просто совершать глупые ошибки.

можете ли вы помочь мне получить какой-либо ответ, когда колесо мыши вращается? Спасибо!

4 ответов


необходимо настроить событие mousewheel.

добавьте это в конструктор Form1 (после InitalizeComponents ();)

this.MouseWheel+= new MouseEventHandler(Form1_MouseWheel);

У меня недостаточно репутации, чтобы ответить комментарием, но ответ на ваш боковой вопрос заключается в том, что делегаты должны быть настроены. Однако при создании кода двойным щелчком на панели Свойства код автоматически генерируется и помещается в *.дизайнер.cs-файл в методе InitializeComponent.


Я не знаю, как подписаться на это конкретное событие, но вы можете переопределить соответствующий метод в форме, вместо.


в этом случае лучше всего переопределить OnMouseWheel функция-член, а не Регистрация события. Например:

public class MyFrm : Form
{
    protected override void OnMouseWheel(MouseEventArgs e)
    {
        /*Handle the mouse wheel here*/
        base.OnMouseWheel(e);
    }
}