Клавиши со стрелками и изменение фокуса управления висят в приложении - PullRequest
0 голосов
/ 28 мая 2009

У меня есть пользовательский элемент управления, который содержит FlowLayoutPanel (поток сверху вниз) с кучей радиокнопок. Элемент управления выставляет событие CheckedChanged, которое срабатывает всякий раз, когда изменяется одна из проверок радиокнопок.

Моя форма содержит пользовательский контроль и текстовое поле. Я подписываюсь на событие usercontrol CheckedChanged и, в зависимости от того, какая кнопка переключается, я отключаю текстовое поле или помещаю фокус в текстовое поле.

Все это прекрасно работает при щелчке мышью при изменении состояния проверки радиокнопки. Тем не менее, это будет зависать бесконечно при использовании клавиш со стрелками. Я не понимаю, почему разница.

Ниже приведены шаги для воспроизведения поведения, которое я вижу:

  1. Создайте пользовательский элемент управления, перетащите элемент управления FlowLayoutPanel и установите его FlowDirection = TopDown. Затем добавьте две радиокнопки к FlowLayoutPanel.

  2. Предоставить обработчик событий в usercontrol

    public event EventHandler CheckedChanged
    {
        add { radioButton2.CheckedChanged += value; }
        remove { radioButton2.CheckedChanged -= value; }
    }
    
  3. Создайте форму окна и удалите вышеуказанный пользовательский элемент управления. Добавьте текстовое поле и установите Enabled в False. Подпишитесь на событие usercontrol CheckedChanged следующим образом

    private void userControl11_CheckedChanged(object sender, EventArgs e)
    {
        textBox1.Select();
    }
    
  4. Run. Обратите внимание, что если вы используете мышь для переключения между радиокнопками, все работает хорошо; но он вылетит, если вы используете клавиши со стрелками вверх / вниз.

1 Ответ

0 голосов
/ 29 мая 2009
public event EventHandler CheckedChanged
{
    add {
         radioButton2.CheckedChanged += value;
        }
    remove {
         radioButton2.CheckedChanged -= value;
        }
}

Хм, value неинициализирован? Или я что-то упустил?

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