Страницы

Поиск по вопросам

среда, 18 декабря 2019 г.

Событие MouseWheel, Windows Form C#

#c_sharp


Пишу приложение в VisualStudio Express 2010 (C#). Есть Panel, в которой расположен
PictureBox. На панель повешено событие MouseWheel, при срабатывании которого выполняется
масштабирование изображения PictureBox. Выглядит так:

//Объявление события
this.Panel.MouseWheel += new MouseEventHandler(this.Panel_MouseWheel);

//Обработчик
private void Panel_MouseWheel(object sender, MouseEventArgs e)
{
//масштабирование
}


Так вот, на моём ноутбуке работает всё прекрасно. Попробовал на ноутбуке товарища
- скролл мыши не перехватывает, скролл точпадом - перехватывает.
Скролл на мыши у товарища рабочий. Подскажите в чём может быть проблема.
    


Ответы

Ответ 1



Возможно, PictureBox не получает WM_MOUSEWHEEL. Проверить можно так: var f = new Form() { Height = 500, Width = 800 }; var p = new PictureBox() { Parent = f, Dock = DockStyle.Top, Height = 100 }; var v = new MessageView(p) { Dock = DockStyle.Fill, Parent = f }; Application.AddMessageFilter(v); f.ShowDialog(); // ... class MessageView : RichTextBox, IMessageFilter { private Control c; public MessageView(Control c) { this.c = c; } public bool PreFilterMessage(ref Message m) { if(m.HWnd == c.Handle) this.AppendText(m + "\n"); // m.Msg = 0x20a (WM_MOUSEWHEEL) return false; } }

Комментариев нет:

Отправить комментарий