2

フォーム/ダイアログの下部にある「OK」ボタンと「キャンセル」ボタンの普及により、コントロールの状態を保存する「標準的な」方法が見つからないように見えるのは奇妙です。

たとえば、フィルタのチェック リスト ボックスがあります。ユーザーが [OK] ボタンをクリックすると、フィルターがデータ セットに適用され、フォームが閉じます。ユーザーがキャンセル ボタンをクリックすると、フォームはすべてのチェック項目の変更を元に戻し、フォームを閉じます。

完璧な世界では、ユーザーが [OK] ボタンをクリックすると、保存されたコントロールの状態が現在のコントロールの状態で上書きされ、新しい状態フラグが設定されます。フォームが閉じているときに、新しい状態フラグが設定されている場合、フォームはフラグをリセットし、設定されていない場合、フォームは表示されたコントロールを保存されたコントロールの状態に置き換えます。このようにして、キャンセル ボタンが押された場合、ユーザーが行ったすべてのチェック済みの変更がリセットされます。

コントロールまたはフォーム全体への変更を元に戻すキャンセル ボタンを処理するベスト プラクティスの方法は何ですか? ベスト プラクティス ソリューションはありますか? これは、テキスト ボックス、ラジアル ボタン、チェック ボックス、および実質的にすべてのコントロールに必要であることがわかりました。そのため、チェック リスト ボックスに固有のものではなく、一般的なものにしてください。

4

2 に答える 2

5

私はそれが次のように簡単であることをお勧めします:

  • UI 自体とは別に、UI に反映されるデータを保持する
  • フォームがロードされたら、データに基づいてその内容を設定します
  • ユーザーが [OK] をクリックしたら、データ モデルへの変更を保存します (ただし、モデルにデータを入力する方法によって異なります)。
  • ユーザーが [キャンセル] をクリックしたとき、変更を保存しない

キャンセル時に変更を「元に戻す」必要はありません。フォームを破棄するだけです。次にフォームを表示するときは、変更を保存していないため、以前と同じデータが読み込まれます。

于 2012-05-30T18:19:40.160 に答える
0

簡単な方法: フォーム インスタンスを再利用しないでください。var childForm = new MyChildForm();それぞれの前に行うchildForm.Show();

于 2012-05-30T18:19:25.580 に答える