Мне нужно, чтобы клавиши со стрелками не могли перемещаться по моим вкладкам. Кто-нибудь знает, как это сделать?
да, я не хочу, чтобы вкладки переключались до ввода пароля.
Я в шоке от того, как ответ помечается как решение, когда он даже не работает! Событие KeyPress не создается для клавиш со стрелками.
Мэтт, если вы не хотите, чтобы вкладки переключались до того, как что-нибудь произойдет, вам следует добавить код в событие SelectedIndexChanged () TabControl. в этом случае это не будет иметь ничего общего с нажатыми клавишами со стрелками. если вы перехватываете только клавиши со стрелками, то любой другой способ переключения на другую вкладку (например, щелчком мыши) также не будет обрабатываться. есть и другие способы, поэтому вы действительно хотите добавить код в событие SelectedIndexChanged () этого элемента управления вкладкой.





Я думаю, вы можете перехватить событие «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
это C++, а не C#. вопрос задан для C#. (не то, что думает, а просто указывает.) Я шокирован тем, как ответ помечается как решение, когда он даже не работает! Событие KeyPress не создается для клавиш со стрелками.
Я исправил проблему с помощью следующего кода
string tempstring = e.KeyValue.ToString();
if (tempstring == "37" || tempstring == "38" || tempstring == "39" || tempstring == "40")
{
e.Handled = true;
}
Я поместил его в метод tabControl1_KeyDown (отправитель объекта, KeyEventArgs e).
Вы В самом деле выполняет целочисленное сравнение, сначала преобразовывая в строку, а затем выполняя сравнение строк?
Есть ли какая-то конкретная причина не хотеть этого?