Я создал UserControl, содержащий 4 текстовых поля и 4 свойства, указывающие на текстовые свойства каждого текстового поля:
public virtual string Server
{
get { return txtDBServer.Text; }
set { txtDBServer.Text = value; }
}
public virtual string Database
{
get { return txtDBName.Text; }
set { txtDBName.Text = value; }
}
public virtual string User
{
get { return txtDBUser.Text; }
set { txtDBUser.Text = value; }
}
public virtual string Pass
{
get { return txtDBPass.Text; }
set { txtDBPass.Text = value; }
}
Затем я использовал этот элемент управления в форме Windows и привязал эти 4 свойства к пользовательской настройке. Это сгенерированный код VS:
this.sqlCx.DataBindings.Add(new System.Windows.Forms.Binding("Server", global::Devtools.WinApp.User.Default, "Server", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.sqlCx.DataBindings.Add(new System.Windows.Forms.Binding("Database", global::Devtools.WinApp.User.Default, "Database", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.sqlCx.DataBindings.Add(new System.Windows.Forms.Binding("User", global::Devtools.WinApp.User.Default, "UserName", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.sqlCx.DataBindings.Add(new System.Windows.Forms.Binding("Pass", global::Devtools.WinApp.User.Default, "Pass", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
Когда я выполняю приложение, между выполнениями сохраняется только первое поле «Сервер», но 3 других поля сбрасываются на пустые, когда пользовательский элемент управления теряет фокус.
Почему это происходит и как это предотвратить?