绑定文本框显示数据库值,但“Text”属性为空字符串

时间:2012-07-25 19:51:40

标签: c# winforms data-binding textbox

我似乎无法找到任何答案,我认为这是一个非常基本的问题。我有一个文本框绑定到一个数据集,该数据集在表单加载时填充。当我运行程序时,数据库中的值显示在文本框中。

但是,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);

2 个答案:

答案 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();

我知道这是一个非常糟糕的乐队帮助修复,但它必须做到完成项目!