В моей WinForm есть панель с некоторыми сетками, у сеток тоже есть полоса прокрутки. Я хотел прокрутить каждую сетку с помощью колеса мыши и прокрутить панель с помощью Shift + scroll. Пробовал это:
private void sitePnlGrid_MouseWheel(object sender, MouseEventArgs e)
{
if (Control.ModifierKeys == Keys.Shift)
this.sitePnlGrid.DisableScroll = false;
else
this.sitePnlGrid.DisableScroll = true;
}
И это:
public class CustomScrollPanel : Panel
{
public bool DisableScroll { get; set; }
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x20a && DisableScroll==true) return;
base.WndProc(ref m);
}
}
Установите this.sitePnlGrid.DisableScroll = false;
в Инициализации.
Это отключает прокрутку, но не включает ее обратно. Я имею в виду: если я сначала сделаю Shift + прокрутку, прокрутка будет работать на панели. Просто сделайте Scroll, он отключает прокрутку панели, поэтому я могу прокручивать сетку. Но если я снова сделаю Shift + прокрутку, прокрутка на панели не будет работать.
Как включить прокрутку панели назад, если она отключена?