Я согласен со всеми комментаторами: не делайте флажки, которые действуют как переключатели , это бросает вызов соглашениям пользовательского интерфейса и смущает пользователей.
Правильный способ сделать этоэто исправить ваш код для сериализации переключателей, но не видя ваш код, трудно понять, как вам помочь.Для начала вы можете исправить цикл CheckedChanged
, временно удалив обработчик событий, прежде чем что-либо делать.Например:
myCheckBox.CheckedChanged -= MyCheckedChangedEventHandler;
myCheckBox.Checked = true;
myCheckBox.CheckedChanged += MyCheckedChangedEventHandler;
Если это само по себе не решит вашу проблему, пожалуйста, покажите нам ваш код, и мы постараемся помочь вам.
Редактировать: Основываясь на учебнике, указанном в вашем обновлении, я предполагаю, что проблема возникает, когда вы вызываете FormSerialisor.Deserialise()
, что вызывает срабатывание обработчиков событий ваших элементов управления?Если это так, быстрое решение состоит в том, чтобы просто сделать то, что я упомянул: удалить обработчики событий переключателей перед вызовом FormSerialisor.Deserialise()
, а затем повторно добавить их после.Пример:
myRadioButton.CheckedChanged -= MyCheckedChangedEventHandler;
FormSerialisor.Deserialise(this, mySerialisepath);
myRadioButton.CheckedChanged += MyCheckedChangedEventHandler;
Вам также может понадобиться отредактировать класс FormSerialisor для обработки RadioButtons;просто скопируйте код, который обрабатывает флажки, но измените все ссылки на RadioButton.Из вашего вопроса не ясно, будет ли этот шаг необходим или нет.