Сделать вкладку не обрабатывать события колесика мыши (C #) - PullRequest
0 голосов
/ 29 августа 2009

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

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

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

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

1 Ответ

1 голос
/ 29 августа 2009

Подкласс 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.

...