Событие нажатия на ползунок в C # - PullRequest
1 голос
/ 25 февраля 2011

Я хотел обработать событие нажатия клавиши со стрелкой на ползунке. Я попробовал поискать его в Google, но почти все ссылки дали мне информацию о том, как обрабатывать его в окнах (переопределяя WndProc или ProcessCmdKey). События KeyDwon и Key Up не запускаются при нажатии стрелки. Как я могу справиться с этим?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2011

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

В любом случае, вам нужно установить событие OnKeyDown для элемента управления панели треков. Что-то такое простое, как следующий код, позволит пользователю использовать стрелки влево и вправо для перемещения из стороны в сторону.

private void trackBar1_KeyDown(object sender, KeyEventArgs e)
        {
            if ((e.KeyCode == Keys.Right) && (trackBar1.Value < trackBar1.Maximum))
                trackBar1.Value += 1;

            if ((e.KeyCode == Keys.Left) && (trackBar1.Value > trackBar1.Maximum))
                trackBar1.Value -= 1;
        }

Вам просто нужно обнаружить нажатие клавиши, а затем решить, будет ли это стрелка влево или вправо, а затем, что делать дальше.

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

0 голосов
/ 25 февраля 2011

Смотрите здесь .

Вот краткая цитата:

Некоторые клавиши, такие как клавиши TAB, RETURN, ESC и клавиши со стрелками,обрабатывается элементами управления автоматически.Чтобы эти ключи вызвали событие KeyDown, необходимо переопределить метод IsInputKey в каждом элементе управления в вашей форме.Код для переопределения IsInputKey должен определить, была ли нажата одна из специальных клавиш, и вернуть значение true.Вместо переопределения метода IsInputKey вы можете обработать событие PreviewKeyDown и установить для свойства IsInputKey значение true.Пример кода см. В событии PreviewKeyDown .

А вот пример кода из события PreviewKeyDown из здесь (PreviewKeyDown) :

// By default, KeyDown does not fire for the ARROW keys
void button1_KeyDown(object sender, KeyEventArgs e)
{
    switch (e.KeyCode)
    {
        case Keys.Down:
        case Keys.Up:
            if (button1.ContextMenuStrip != null)
            {
                button1.ContextMenuStrip.Show(button1,
                    new Point(0, button1.Height), ToolStripDropDownDirection.BelowRight);
            }
            break;
    }
}

// PreviewKeyDown is where you preview the key.
// Do not put any logic here, instead use the
// KeyDown event after setting IsInputKey to true.
private void button1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    switch (e.KeyCode)
    {
        case Keys.Down:
        case Keys.Up:
            e.IsInputKey = true;
            break;
    }
}
...