ApplicationSettings – как отказаться от сохранения пустых зн
От: Animal  
Дата: 27.02.08 05:44
Оценка:
День добрый!
У меня простая ситуация, есть 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…?!
Заранее спасибо за ответ.
Re: ApplicationSettings – как отказаться от сохранения пусты
От: Animal  
Дата: 02.03.08 08:39
Оценка:
Парни? Некорректно задан вопрос или совсем ламерский...?
Re[2]: ApplicationSettings – как отказаться от сохранения пу
От: Spiceman  
Дата: 02.03.08 11:57
Оценка:
Здравствуйте, Animal, Вы писали:

A>Парни? Некорректно задан вопрос или совсем ламерский...?

Вполне нормальный вопрос. Предлагаю идеи:
1. В классе настроек в сеттере свойства ConnectionString проверять значение на null, если null, то не изменять свойство (если это возможно).
2. Добавить на форму валидатор, который бы проверял TextBox на пустое значение и не давал бы задать пустое значение в поле.
3. Обрабатывать событие TextChanged у поля и не давать установить пустое значение (аналогично пункту 2).
Re[3]: ApplicationSettings – как отказаться от сохранения пу
От: Animal  
Дата: 03.03.08 04:52
Оценка:
Спасибо, я просто новичок и правду сказать предложенные варианты показались сложными.
Я сделал немного по другому.

— Отбиндился.
— в конструкторе формы восстанавливаю значение поля:

textBoxConnectionString.Text = Properties.Settings.Default.ConnectionString;


— в FormClosing формы сохраняю по условию:


if ( Str.Replace ( " ", "" ).Length != 0 )
Properties.Settings.Default.ConnectionString = textBoxConnectionString.Text;


Всё отрабатывает как я и хотел.
Re[4]: ApplicationSettings – как отказаться от сохранения пу
От: Spiceman  
Дата: 03.03.08 10:42
Оценка:
Здравствуйте, Animal, Вы писали:

Только вместо:
if ( Str.Replace ( " ", "" ).Length != 0 )

лучше писать так:
if (Str.Trim().Length != 0)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.