Не удается запустить событие 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);
}
}