Вопрос

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

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


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

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

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

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

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);
Это было полезно?

Решение

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

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

Другие советы

Установка TABSTOP в FALSE на Radiobutton, чтобы предотвратить работу в режиме управления, пока вы не выберете переключательную кнопку без каких-либо дополнительных переопределений, как предложены @ Matercy.

РЕДАКТИРОВАТЬ

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top