1

現在アクティブなフォームのコントロール(チェックボックス/ラジオボタン)が選択/切り替えられているかどうかを確認するにはどうすればよいですか?

私の目標は、との現在の状態を保存できるようにする「変更を自動的に保存」というオプションを作成することです。そのため、コントロールがいつ選択/切り替えられるかを知る必要があります(設定の保存方法を実行するため)。コントロールごとに個別のイベントハンドラーを作成する必要はありません。可能な場合は、一般的なソリューションを探しています。check boxesradio buttons

4

2 に答える 2

6

これはユーザーインターフェイスの仕事ではありません。

データバインディングを使用して、コードビハインドでモデルを変更し、モデルに変更をトリガー/エスカレーションさせます。


あなたの途中で少しあなたを助けるために:

チェックボックスやその他のコントロールは、データがある場所ではありません。データのみを表示する必要があります。

チェックボックスのブールプロパティとラジオボックスのint/enumプロパティを使用してオブジェクト(モデル)を作成します。コントロールからプロパティへのデータバインディングを設定します。

次に、プロパティのセッターに必要なロジックを実装できます。

于 2012-09-05T11:36:00.100 に答える
0

Henkが提案したように、MVCなどの関心の分離パターンを使用してUIとドメインロジックを分離することができます。ユーザーがUIウィジェットに変更を加えると、たとえばプロパティを設定するなどして、モデルの値を更新します。次に、プロパティセッターはIsDirty(またはHasChanges、...)フィールドを更新できます。このプロパティはUIによって読み取られ、IsDirtyの値に応じて、何を行う必要があるかを決定します。(MessageBox( "変更を保存しますか")またはその他のものを表示します)

あなたが質問に。でタグを付けている間、ヘンクはウェブを考えていたと思いますWinForms。UIとドメインロジックを分離するためにパターンを使用していない可能性があります。(そして、そのUIとドメインコードはすでに非常に絡み合っているため、現在の期限では現在モデルを導入できません)

IsDirtyフィールドをに配置し、そのIsDirty値を設定するFormことで、同じことを実現できます。Changed EventHandlersフォームをサブクラス化する(つまり、'FormBase'にIsDirtyを配置する)ことと、コントロール(たとえば、透かしを導入することによって)を使用すると、すべてのフォームでこの動作をすぐに使用できます。

于 2012-09-05T12:06:27.990 に答える