1

かなり基本的な問題だと思うので、答えが見つからないようです。フォームの読み込み時に入力されるデータセットにバインドされたテキストボックスがあります。プログラムを実行すると、データベースの値がテキストボックスに表示されます。

ただし、textプロパティは空の文字列です。フィールドをクリックしてそのままにしておくと、テキスト値が設定されます。テーブルアダプタを介したデータベースの読み取り、さらには書き込みも正常に機能しています。textプロパティに値を取得できないようです。

関連するコードは次のとおりです...

ユーザーインターフェイスを介してフィールドをバインドしたときにVisualStudioによって追加されたコード:

this.appSettingsBindingSource.DataMember = "AppSettings";
this.appSettingsBindingSource.DataSource = this.dSAppSettings;
this.tbUsername.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.appSettingsBindingSource, "Username", true));

フォームのloadメソッドの行は次のとおりです。

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

さて、私は問題を回避しましたが、そもそもこの問題につながったいくつかの基本的なステップを逃したと確信しています。

私のバインドされたコントロールは2つの異なるタブにあります。そこで、各タブをアクティブにしてから、タブの各コントロールにフォーカスを設定しました。

// 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 に答える