2009-08-29 4 views
0

Я сделал приложение MDI (tabbed), которое использует PictureBoxes внутри TabPages. Фотошоп иногда больше, чем вкладка, поэтому появляются полосы прокрутки. Он написан на C#, используя Windows Forms.Сделать вкладку не обрабатывать события mousewheel (C#)

Внутри моей вкладки я захватываю и обрабатываю события колесика мыши в событии MouseWheel (я использую его для поворота некоторых объектов, которые я рисую в окне изображения).

Но когда у меня есть полоса прокрутки, когда я поворачиваю колесико мыши, мои объекты вращаются, но вкладка также прокручивается вниз.

Как я могу заставить вкладку не обрабатывать событие мыши и, таким образом, не прокручивать вниз? Я хочу, чтобы он был прокручиваемым, если пользователь нажимает и перетаскивает полосу прокрутки.

ответ

1

Подкласса TabPage и переопределить метод WndProc() игнорировать WM_MOUSEWHEEL сообщений:

public class MyTabPage : TabPage 
{ 
    private const int WM_MOUSEWHEEL = 0x20a; 

    protected override void WndProc(ref Message m) 
    { 
    // ignore WM_MOUSEWHEEL events 
    if (m.Msg == WM_MOUSEWHEEL) 
    { 
     return; 
    } 

    base.WndProc(ref m); 
    } 
} 

Затем используйте MyTabPage подкласс вместо стандартного TabPage.

+0

Работы! Благодаря! PS: Есть ли другой способ, который не потребует от меня создания другого класса? – Ove

Смежные вопросы