Вы можете добавить следующий обработчик событий к событию Click каждого из трех RadioButton (из которых свойства Checked привязаны к параметрам приложения) в вашем GroupBox:
Он работает, даже если после щелчка на нем проверяется отключенный RadioButton через полсекунды.
Причина проблемы была объяснена два года назад (в 2008 году) в разделе 5 документа Surviving WinForms Databinding в блоге Turbulent Intelect (спасибо, ohadsc за ссылку) :
Правило 5. Не привязывайтесь к интерактивным переключателям
Я знаю, как было бы здорово, если бы вы могли просто привязать кучу переключателей к свойству enum. Я действительно. Вы думаете, что просто подключите некоторые события Format и Parse, чтобы преобразовать их обратно в перечисление, и все будет хорошо. Было бы чертовски удобно, если бы это действительно работало. Но WinForms для этого не годится. Для трех полных выпусков сейчас (или это 3.5 релизы?) Так и было. Это из-за порядка событий, который MS не может изменить, не заставив тысячи разработчиков по-настоящему разозлиться.
Проблема действительно сводится к тому, что, в отличие от свойств данных других элементов управления, свойство Checked переключателя фактически не изменяется, пока фокус не покинет переключатель. И, как со всеми элементами управления WinForms, фокус фактически не покидает переключатель до тех пор, пока фокус не будет передан другому элементу управления, и фактически только после того, как сработает событие Click вновь сфокусированного элемента управления. Результатом этого, что касается переключателей, является то, что если вы попытаетесь выполнить привязку к ним, связанные свойства в вашем источнике данных фактически отстают от визуального состояния ваших переключателей на один щелчок. Если у вас есть только два переключателя, источник данных будет находиться точно напротив видимого состояния, пока вы не нажмете где-нибудь еще, что не запускает действие, которое ссылается на эти свойства источника данных. Что может сделать эту ошибку действительно раздражающей. Я почти подумал, что у меня галлюцинации.
Теперь, честно говоря, это возможно. Но это самый грязный клудж из всех, что когда-либо собирались. Ладно, может быть, это не так уж и плохо ... но это точно грязный хакер. Для того, чтобы то, что действительно уже должно быть доступно, нужно потрудиться. Насколько я могу судить, единственный способ решить эту проблему, не отказываясь от механизма привязки данных, - это, по сути, создать собственный элемент управления RadioButton с изменением свойств и порядком событий, которые действительно полезны. Вы можете написать один с нуля или создать подкласс RadioButton и переопределить всю логику событий с помощью настраиваемой обработки сообщений.