Стоп клавиши со стрелками прокручивать вкладки на TabControl C # Winform

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

10.12.2008 23:42:12
Есть какая-то конкретная причина, по которой вы не хотите, чтобы это произошло?
George Stocker 11.12.2008 01:07:16
да, я не хочу, чтобы вкладки переключались до ввода пароля.
Matt 11.12.2008 21:58:19
Я в шоке от того, как ответ помечается как решение, когда оно даже не работает! Событие KeyPress не генерируется для клавиш со стрелками.
Shawn Kovac 22.02.2015 22:21:57
Мэтт, если вы не хотите, чтобы вкладки переключались до того, как что-то произойдет, вы должны добавить код в событие SelectedIndexChanged () TabControl. в этом случае это не имеет никакого отношения к нажатым клавишам со стрелками. если вы ловите только клавиши со стрелками, то любой другой способ переключения на другую вкладку (например, щелчком мыши) также не будет обрабатываться. Есть и другие способы, поэтому вы действительно хотите добавить код в событие SelectedIndexChanged () этого элемента управления вкладки.
Shawn Kovac 22.02.2015 23:02:08
2 ОТВЕТА
РЕШЕНИЕ

Я думаю, что вы можете перехватить событие "KeyPress" для этого элемента управления

тогда на ручке у вас есть

System::Windows::Forms::KeyPressEventArgs^  e

Затем вы проверяете

if (e->KeyChar == [find the number representing the arrow key])
  e->Handled = true; // Meaning that no one will receive it afterwards
-1
10.12.2008 23:46:15
это C ++, а не C #. вопрос, заданный для C #. (не тот ум, но просто указывающий.) Я шокирован тем, как ответ помечается как решение, когда оно даже не работает! Событие KeyPress не генерируется для клавиш со стрелками.
Shawn Kovac 22.02.2015 22:21:24

Я исправил проблему с помощью следующего кода

string tempstring = e.KeyValue.ToString();
if (tempstring == "37" || tempstring == "38" || tempstring == "39" || tempstring == "40")
{
     e.Handled = true;
}

Я поместил его в метод tabControl1_KeyDown (отправитель объекта, KeyEventArgs e).

0
11.12.2008 21:59:53
Вы действительно делаете целочисленное сравнение, сначала конвертируя в строку, а затем проводя сравнение строк?
richvdh 17.01.2012 13:04:28