我有一個設計問題,當您想要在用戶單擊DataGridView中的單元格時發生不同的操作時,基於哪種類型的信息在那個牢房裏。C# - DataGridView - 具有獨特的基於內容的CellClick事件
想象下面的情景。有一個包裹交付系統,其中一個屏幕顯示當前計劃的所有交付清單。列可能包括:
- 交貨編號
- 客戶編號
- 客戶交貨地點
- 主要聯繫人
- 交貨訂單收據
如果用戶會點擊單元格中的作用應根據列的不同而有所不同。例如,如果用戶點擊「客戶配送地點」,則可能會打開一個配送地點窗口,允許他們查看/編輯地點詳情。如果用戶點擊「遞送訂單收據」,它可能會打開一個顯示訂單收據的PDF窗口。
執行此操作的簡單方法是在CellClick事件上執行If語句。僞代碼:
If (column = Delivery Order Receipt)
{
LoadPDF()
}
Else if (column = Customer Delivery Location)
{
LaunchDeliveryWindow()
}
這對我來說似乎有點草率。特別是如果在某個時間點,程序需要擴展以包含獨特的右鍵操作,或者沿着這些線路。然後代碼基本上必須被複制。有更好的方法嗎?有一個類,也許是ColumnActionType,它定義了什麼樣的動作應該與列相關聯呢?
我想這取決於存在多少選擇。如果用鼠標左鍵點擊「Delivery Order Receipt」列僅產生一個動作,其他反應類似1:1,那麼您的方法並不錯。你可以把它封裝在一個類中,但是在某個時候,你仍然需要決定什麼是被點擊的,如何以及如何處理它。 – DonBoitnott