Похоже, вы не используете BindingSource и, возможно, вы выполняете больше работы, чем вам нужно.
При использовании привязки данных в WinForms вам обычно не нужноиспользовать большинство из упомянутых вами событий для выполнения типичных требований.
Для начала, если вы не знакомы с BindingSource, прочитайте об этом.
Вот как это должно быть у васset up:
В конструкторе форм создайте новый источник данных из класса конфигурации (тот, который имеет 10 настроек).
Добавьте компонент BindingSource в форму.
Установите свойство DataSource BindingSource для нового источника данных, который вы только что создали.
Установите ComboBox DataSource на BindingSource.
Установите ComboBox DisplayMember на соответствующее описательное свойство BindingSource (которое теперь представляет класс настроек).
Свяжите свойства Text 10 TextBox с 10 настройками свойств BindingSource.
Во время выполнения установите свойство DataSource дляBindingSource для массива, содержащего 5 объектов конфигурации.
На этом этапе у вас есть рабочая привязка данных.Используйте пользовательский интерфейс для внесения изменений в некоторые настройки, и эти изменения будут отражены в источнике данных (вашем массиве).
(Если это не работает или ведет себя странно, возможно, вам придется удалить обработку событий, которую вы в данный момент делаете.) Обратите внимание, что вам не нужно писать ЛЮБОЙ код, чтобы изменения, которые вносит пользователь,записано в ваш источник данных.Это происходит автоматически.Вам просто нужно написать код, чтобы сохранить данные где-нибудь.
По умолчанию каждое изменение настроек будет отражаться в массиве только тогда, когда текстовое поле теряет фокус, а другой элемент управления, имеющий CausesValidation = true, получает фокус.Поэтому, если ваша кнопка «Настройки записи» имеет значение CausesValidation = true (по умолчанию), тогда ваш массив будет содержать все актуальные данные при обработке этого события щелчка.
Если вы предпочитаете, вы можетеиметь любые изменения, внесенные в текстовые поля настроек, немедленно отраженные в источнике данных, изменив UpdateMode привязок на OnPropertyChanged.По умолчанию OnValidation, то есть, пока фокус не переместится на другой элемент управления с CausesValidation = true.
Еще одна вещь, а затем я остановлюсь на данный момент (потому что я знаю, что могу рассказать вам всевы уже знаете):
Подумайте о том, чтобы ваш класс настроек реализовал INotifyPropertyChanged .Затем вы можете обработать событие PropertyChanged для выполнения проверки, когда пользователь вводит изменения.В качестве альтернативы вы можете обрабатывать события Validating на элементах управления.
Если вы уже знаете все вышеперечисленное, то я прошу прощения за неправильное предположение.От вашего вопроса у меня сложилось впечатление, что вы еще не полностью обнаружили привязку данных WinForms.