#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; } }
Комментариев нет:
Отправить комментарий