WinForm - TabStop не работает - PullRequest
       33

WinForm - TabStop не работает

3 голосов
/ 24 августа 2010

У меня есть WinForm с 3 групповыми блоками, один со списком и два с переключателями.Я установил для всех элементов управления и их дочерних элементов значение «TabStop = false», но при циклическом переключении с TAB фокусируется выбранная в настоящий момент радиокнопка в каждом из последних двух групповых блоков.

Если нет способаизменить это поведение, что было бы хорошим событием, чтобы поймать и переместить фокус?Я не могу найти событие «OnFocus».


Решение состоит в том, чтобы установить один метод (код ниже) для обработки события «Ввод» каждой радиокнопки в форме (если это то, что выжелание).

На самом деле, я сделал это только для переключателей первого группового блока, и это сработало, переключатели второго группового блока не получают фокус, даже если их события «Enter» не обрабатываются,Это не то поведение, которого вы ожидали бы.

private void radiobuttonXGroup1_Enter(object sender, EventArgs e)
{
   SomeOtherControl.Focus();
}

В файле * .Designer.cs вы редактируете каждое событие Enter (для каждой радиокнопки) так, чтобы оно указывало на один обработчик событий (описанный выше метод).

this.radiobutton1Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
this.radiobutton2Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
this.radiobutton3Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);

Ответы [ 2 ]

5 голосов
/ 25 августа 2010

Установка для TabStop значения False на RadioButton, чтобы запретить вкладки для элемента управления, работает, пока вы не выберете переключатель без каких-либо дополнительных переопределений, таких как @ msergeant.

EDIT

Следующий код не позволяет коду получить событие клавиши табуляции:

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
   radioButton1.TabStop = false;
}

Радиокнопки ведут себя иначе, чем Tab, по сравнению с другими элементами управления, так как они работают в наборах или группах на основе установки индекса вкладки или размещения радиокнопок в групповом поле.

5 голосов
/ 25 августа 2010

В документации MSDN для RadioButton.TabStop говорится "Этот API поддерживает инфраструктуру .NET Framework и не предназначен для использования непосредственно из вашего кода".Что в основном означает: «Это не сработает так, как вы ожидаете».

С учетом вышесказанного событие Enter будет срабатывать, когда кнопка получает фокус.Вы можете попытаться использовать это, чтобы переместить фокус на другой элемент управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...