私は多くを検索しましたが、適切な解決策が見つかりませんでした。どのボタンがクリックされたかに応じてバインディングを検証する
私はTextBox
,DataGridView
,sおよびBindingSource
を持っています。
私は私が働く、バインディングおよびデータはDataGridView
からTextBox
にロードされている設定私のButton
「変更」をクリックしてください:私は今Button
をクリックすると
textBox.DataBindings.Add("text", bindingSource, "Name", true, DataSourceUpdateMode.OnPropertyChanged);
結合を「キャンセル」はクリアされます。
をtextBox.DataBindings.Clear();
でも、データはDataGridView
に転送されます。私はそれがOnPropertyChanged
のためだと思う。 OnValidation
に変更すると、検証時にのみ保存されることがわかります。
しかし、どのように検証したり、検証を拒否できますか?私は2 Button
を持っていて、「保存」ボタンか「キャンセル」ボタンがクリックされたかどうかによって、それはDataGridView
に転送されるべきです。イベント
textBox.Validating += textBox_Validating;
と
そしてまた、私はボタンをクリックする前にこの関数が呼び出されるので、私は、それが実行して取得できませんでした。
どうすればこの問題を解決できますか?
おかげで、素晴らしい作品:)私は、今リスト使用し、foreachので、私はすべての値を読み書き。 –
Beetee
こんにちはIvan:今度は 'BeginEdit'、' CancelEdit'と 'EndEdit'でインターフェース' IEditableObject'を見つけました。これは 'ReadValue'や' WriteValue'のようなものですか? – Beetee
こんにちは@ビーティ、まあまあです。まず、オブジェクトにそのインタフェースを実装する必要があります。また、 'BeginEdit'の実装は、' CancelEdit'が呼び出された場合にそれらを復元できるように、何らかの形ですべてのプロパティ値をどこかに格納する必要があります。上記の手法では、コントロール内に新しい値を保持し、特に要求された場合にのみデータソースを更新するため、このような要件はありません。 –