ユーザーが DataGridView のセルをクリックしたときに、そのセルに含まれる情報の種類に基づいて、さまざまなアクションを発生させたい場合の最善のアプローチについて、設計上の質問があります。
次のシナリオを想像してください。パッケージ配送システムがあり、画面の 1 つに、現在スケジュールされているすべての配送のリストが表示されます。列には次のものを含めることができます。
- 配達番号
- 顧客番号
- お客様の配送先
- 一次連絡先
- 配送 受注
ユーザーがセルをクリックする場合、アクションは列が何であるかに基づいて異なる必要があります。たとえば、ユーザーが [顧客の配送先] をクリックすると、配送先の詳細を表示/編集できる [配送先] ウィンドウが開く場合があります。ユーザーが [Delivery Order Receipt] をクリックすると、注文の領収書を示す PDF ウィンドウが開く場合があります。
これを行う簡単な方法は、CellClick イベントで If ステートメントを実行することです。擬似コード:
If (column = Delivery Order Receipt)
{
LoadPDF()
}
Else if (column = Customer Delivery Location)
{
LaunchDeliveryWindow()
}
これは私には少しずさんに思えます。特に、ある時点でプログラムを拡張して、独自の右クリック アクション、またはそれらに沿った何かを含める必要がある場合。次に、基本的にコードを複製する必要があります。より良いアプローチはありますか?列に関連付ける必要があるアクションを定義するクラス (ColumnActionType など) を持つことについてはどうでしょうか?