1

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

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

2 回答 2

1

尝试添加DataSourceUpdateMode.OnPropertyChanged到绑定语句的末尾。我相信默认是OnValidation.

this.tbUsername.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.appSettingsBindingSource, "Username", true, DataSourceUpdateMode.OnPropertyChanged));
于 2012-07-25T23:30:13.457 回答
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();

我知道这是一个糟糕的修复工具,但必须完成项目才能完成!

于 2012-07-27T18:36:38.633 回答