我似乎无法找到任何答案,我认为这是一个非常基本的问题。我有一个文本框绑定到一个数据集,该数据集在表单加载时填充。当我运行程序时,数据库中的值显示在文本框中。
但是,text属性是一个空字符串。如果我单击该字段然后保留它,则设置文本值。通过表适配器读取,甚至写入数据库工作正常。我似乎无法在text属性中获取值。
以下是相关代码......
当我通过用户界面绑定字段时由Visual Studio添加的代码:
this.appSettingsBindingSource.DataMember = "AppSettings";
this.appSettingsBindingSource.DataSource = this.dSAppSettings;
this.tbUsername.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.appSettingsBindingSource, "Username", true));
以下是表单加载方法的行:
this.appSettingsTableAdapter.Fill(this.dSAppSettings.AppSettings, CompanyID);
答案 0 :(得分:1)
尝试将DataSourceUpdateMode.OnPropertyChanged
添加到绑定语句的末尾。我认为默认值为OnValidation
。
this.tbUsername.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.appSettingsBindingSource, "Username", true, DataSourceUpdateMode.OnPropertyChanged));
答案 1 :(得分:0)
好吧,我已经解决了这个问题,但我确信我已经错过了导致这个问题的一些基本步骤。
我的绑定控件位于两个不同的选项卡上。因此,我激活了每个选项卡,然后将焦点设置到选项卡上的每个控件:
// Workaround: Focus() forces the dataset value into the bound property of a control
tabCtlSettings.SelectedTab = tabAccountSettings; // Activate second tab
foreach (Control ctl in tabAccountSettings.Controls)
ctl.Focus();
tabCtlSettings.SelectedTab = tabOptions; // Activate first tab
foreach (Control ctl in tabOptions.Controls)
ctl.Focus();
我知道这是一个非常糟糕的乐队帮助修复,但它必须做到完成项目!