0

開始したばかりの Windows フォーム プロジェクトがあります。フォームには、製品をロードしているリストボックスがあります。誰かが製品をダブルクリックすると、ProductChanged イベントが発生するようにします。私のプロジェクトの他のものは、このイベントをサブスクライブし、製品が変更されたときに GUI の他の部分などを更新します。

私の質問は、イベントはどこにあるべきで、誰がそれを起こすべきですか? イベントをフォーム上に配置し、リストボックスのダブルクリック ハンドラーによって発生させる必要がありますか? または、製品クラスのイベントがあり、リストボックスがこのクラスのメソッドを呼び出して、製品が変更されたことを知らせる場所に設定する必要があります。そして、Product クラスはイベントを発生させますか? それとも別の方法で行うべきですか?

4

4 に答える 4

1

製品の変更は UI イベントです。フォーム上で発生し、他の UI 要素がイベントにサブスクライブする場合は意味があります。

于 2008-09-27T17:37:56.560 に答える
1

その製品が変更されたため、リストボックスはイベントを発生させる必要があります。

于 2008-09-27T17:38:39.553 に答える
0

ProductChangedという名前は、製品が変更されたときにイベントが発生することを意味します。その場合、変更ごとにイベントがトリガーされるため、製品クラスでイベントを発生させます。GUI でトリガーし、後で (たとえば) インポート機能を追加すると、変更後にイベントを発生させるのを忘れている可能性があります。

于 2008-09-27T19:02:34.810 に答える
0

イベントが何を意味するかによって異なります。Product オブジェクトが変更されたことをサブスクライバーに通知することが目的の場合、それは Product クラスに属し、そのクラス内のコードによって起動される必要があります。別の製品オブジェクトが選択されたことを通知することが目的の場合は、製品のリストを管理するビュー (リストボックス/フォーム) に属します。

于 2008-09-27T17:42:21.760 に答える