0

ユーザーが DataGridView のセルをクリックしたときに、そのセルに含まれる情報の種類に基づいて、さまざまなアクションを発生させたい場合の最善のアプローチについて、設計上の質問があります。

次のシナリオを想像してください。パッケージ配送システムがあり、画面の 1 つに、現在スケジュールされているすべての配送のリストが表示されます。列には次のものを含めることができます。

  • 配達番号
  • 顧客番号
  • お客様の配送先
  • 一次連絡先
  • 配送 受注

ユーザーがセルをクリックする場合、アクションは列が何であるかに基づいて異なる必要があります。たとえば、ユーザーが [顧客の配送先] をクリックすると、配送先の詳細を表示/編集できる [配送先] ウィンドウが開く場合があります。ユーザーが [Delivery Order Receipt] をクリックすると、注文の領収書を示す PDF ウィンドウが開く場合があります。

これを行う簡単な方法は、CellClick イベントで If ステートメントを実行することです。擬似コード:

If (column = Delivery Order Receipt)
{
    LoadPDF()
} 
Else if (column = Customer Delivery Location)
{
    LaunchDeliveryWindow()
}

これは私には少しずさんに思えます。特に、ある時点でプログラムを拡張して、独自の右クリック アクション、またはそれらに沿った何かを含める必要がある場合。次に、基本的にコードを複製する必要があります。より良いアプローチはありますか?列に関連付ける必要があるアクションを定義するクラス (ColumnActionType など) を持つことについてはどうでしょうか?

4

3 に答える 3