1

非常に単純なデータバインディングを追加すると、ラジオボタンの動作が異なる理由を理解しようとしています。

X と Y の 2 つのラジオボタンだけを持つ非常に単純なフォームを考えてみましょう。ここで、それらを保持したいとします。そのため、フォーム デザイナーでChecked、X と Y の両方のプロパティに新しい設定キーを追加します。次に、プログラムを実行します。どちらのチェックボックスも最初はチェックされていないので、X をクリックするとチェックされます。ここまでは順調ですね。ここで Y をクリックし、X が再びチェック解除され、Y がチェックされることを期待しますが、何が起こるかというと、X だけがチェック解除され、Y はそのままです。もう一度 Y をクリックすると、Y にチェックが入ります。

バインディングは次のようになります。

this.rbX.DataBindings.Add("Checked", global::rb.Properties.Settings.Default, "X", true, DataSourceUpdateMode.OnPropertyChanged));
this.rbY.DataBindings.Add("Checked", global::rb.Properties.Settings.Default, "Y", true, DataSourceUpdateMode.OnPropertyChanged));

私は何かを見逃していますか、何か間違っていますか?

4

3 に答える 3

0

これが古いことは知っていますが、この問題があり、満足のいく答えが見られなかったので...この場合、設定をバインドするのではなく、「手動で」処理する必要があることを学びました。

私の解決策は、「CheckedChanged」イベントハンドラーにコード行を追加し、フォームの読み込み時に設定を適用することでした。

    Properties.Settings.Default.radio_checked_setting = radio.Checked;

radio.Checked = Properties.Settings.Default.radio_checked_setting;

私にはバグのように思えますが、技術的な定義に適合するかどうかはわかりません。すべてのユーザー設定を手動で保存することに比べて、依然として非常に便利です:)

于 2016-03-18T17:05:39.663 に答える