Подтвердить что ты не робот

Как я могу прокручивать свою панель с помощью мыши?

У меня есть панель в моей форме с параметром AutoScroll, равным true, поэтому автоматически появляется панель прокрутки.

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

4b9b3361

Ответ 1

Панель или элемент управления на панели должны иметь фокус. Обратите внимание: если элемент управления с фокусом имеет полосы прокрутки, он будет прокручиваться вместо панели.

Ответ 2

Что сработало для меня, было добавление panel1_MouseEnter EventHandler:

private void panel1_MouseEnter(object sender, EventArgs e)
{
    panel1.Focus();
}

Ответ 3

Ниже код работает для меня.....

    Public Form
{
InitializeComponent();  
this.MouseWheel += new MouseEventHandler(Panel1_MouseWheel);
}

 private void Panel1_MouseWheel(object sender, MouseEventArgs e)
        {
         panel1.Focus();
         }

Ответ 4

В файле конструктора вы можете добавить следующую строку кода. событие MouseWheel не выполняется в списке событий в окне "Свойства".

this.Panel1.MouseWheel+= System.Windows.Forms.MouseEventHandler(this.Panel1_MouseWheel);

Panel1_MouseWheel будет срабатывать при скатывании мыши.

Добавьте код в файл .cs

Ответ 5

Убедитесь, что ваша панель имеет фокус. И это простой код для прокрутки панели прокрутки панели. Надеюсь, эта помощь.:)   введите код здесь

        if(e.Delta > 0)
        {

            if (pnlContain.VerticalScroll.Value - 2 >= pnlContain.VerticalScroll.Minimum)
                pnlContain.VerticalScroll.Value -= 2;
            else
                pnlContain.VerticalScroll.Value = pnlContain.VerticalScroll.Minimum;
        }
        else
        {
            if (pnlContain.VerticalScroll.Value + 2 <= pnlContain.VerticalScroll.Minimum)
                pnlContain.VerticalScroll.Value += 2;
            else
                pnlContain.VerticalScroll.Value = pnlContain.VerticalScroll.Maximum;
        }

Ответ 6

Я использую форму окна с BorderStyle, которой нет ни одного, где я использую панель, чтобы иметь все мои элементы управления, поэтому она выглядит красиво (разница в цвете и т.д.) имела ту же проблему, в то время как у меня были другие формы, работал нормально.

Что я забыл:

   public myForm()
   {
        InitializeComponent();
        this.DoubleBuffered = true;
   }

DoubleBuffered волшебный, я заметил.

Ответ 7

Перемещение колеса прокрутки должно запускать событие MouseMove управления. Аргумент MouseEventArgs имеет свойство с именем Delta, которое дает (подписанное) количество выемок, которые перемещало колесо мыши. Вы можете использовать это свойство для прокрутки панели.

Ответ 8

Решение (см. выше), предоставленное Beam022, работало для меня, в то время как многие другие решения этого не сделали. В моем случае я пытался прокрутить элемент управления DataGridView с помощью события mousewheel.

Вызывается обработчик событий DataGridView_MouseWheel, но значение FirstDisplayedScrollingRowIndex никогда не изменялось. Значение всегда было "0" даже после того, как явным образом установил его равным 1. Как будто свойство было только для чтения.

Все еще воспроизводится в .Net Framework 4.6.