Во-первых, я должен предупредить вас, что вы переопределяете стандартное поведение Windows.В любом диалоговом окне страницы свойств или в любом другом месте, где используются вкладки в пользовательском интерфейсе, использование клавиш со стрелками влево и вправо будет пролистывать вкладки и заставлять их отображать их содержимое в элементе управления вкладками.Вам не нужно нажимать Enter, чтобы отобразить выбранную вкладку.Убедитесь, что ваши пользователи понимают, что ваше приложение отличается (и что вы понимаете потребности своих пользователей), если вы решите пойти по этому пути.
Тем не менее, вы можетепереопределите это поведение, обрабатывая событие KeyDown
для TabControl
, определяя, когда была нажата одна из клавиш со стрелками, и отменяя его. Например:
private void myTabControl_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
//Check to see if an arrow key was pressed
if ((e.KeyCode == Keys.Left) || (e.KeyCode == Keys.Right))
{
//Cancel the keypress by indicating it was handled
e.Handled = true;
}
}
Однако, как только вы это сделаете, у пользователя не будет возможности установить фокус на вкладке конкретной вкладки, потому что, как только вкладка получает фокус, страница вкладки сразу открывается.Это обрабатывается родителем TabControl
и не связано с событием Paint
(которое отвечает за то, как отображается элемент управления, а не когда и почему).
Конечно,вы всегда можете определить, была ли нажата клавиша Enter в том же событии KeyDown
, и активировать любую вкладку, которую вы хотите (например, с помощью переменной счетчика, которая увеличивается / уменьшается каждый раз при нажатии соответствующей клавиши со стрелкой), ноне будет видимого указания пользователю, какая вкладка будет затем отображаться.Прямоугольник фокуса не будет нарисован.
Также помните, что нажатие Ctrl + Tab или Ctrl + Page Up / Page Down будет переключаться между вкладками.Если это также нежелательно, вам необходимо следить за этими комбинациями клавиш и отменять их.
Каждый раз, когда вы начинаете пытаться переопределить поведение по умолчанию, у вас возникает гораздо больше проблем, чемесли вы просто разрабатываете приложение вокруг него.Если есть конкретная причина, по которой вы хотите, чтобы клавиша Enter выполняла переключение страниц вкладок, мы могли бы помочь вам найти более простое и лучшее решение.