День добрый!
У меня простая ситуация, есть TextBox забинденный стандартно через дизайнер к ApplicationSettings:
this.textBoxConnectionString.DataBindings.Add ( new System.Windows.Forms.Binding ( "Text", global::InfobaseManager.Properties.Settings.Default, "ConnectionString", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged ) );
Есть обработчик при закрытии формы, где вызывается
Properties.Settings.Default.Save ();
Всё работает замечательно. Но у меня задача: я не хочу сохранять пустые значения свойств, например, если пользователь в поле ввода удалил текст, я не хочу, чтобы он сохранялся и затер предыдущее сохраненое значение. Подскажите пожалуйста, как методически правильно решается эта задача? Мои попытки перехватывать события SettingsSaving не приводят к успеху, потому что туда уже попадают пустые значения свойств.
Я могу конечно отбиндится и вручную сохранять свойства, но тогда мне придётся делать эти контролы как public…?!
Заранее спасибо за ответ.
Спасибо, я просто новичок и правду сказать предложенные варианты показались сложными.
Я сделал немного по другому.
— Отбиндился.
— в конструкторе формы восстанавливаю значение поля:
textBoxConnectionString.Text = Properties.Settings.Default.ConnectionString;
— в FormClosing формы сохраняю по условию:
if ( Str.Replace ( " ", "" ).Length != 0 )
Properties.Settings.Default.ConnectionString = textBoxConnectionString.Text;
Всё отрабатывает как я и хотел.
Здравствуйте, Animal, Вы писали:
Только вместо:
if ( Str.Replace ( " ", "" ).Length != 0 )
лучше писать так:
if (Str.Trim().Length != 0)