2011-05-02 43 views
0

我有一個在設計器中分配了ContextMenuStrip的DataGridViewColumn。在菜單條項目的click事件處理程序中,我需要獲取包含產生上下文菜單的單元格的行的行索引。 DataGridView.CurrentCell.RowIndex工作正常,只要在顯示上下文菜單之前單擊鼠標左鍵來選擇單元格即可。但是,如果沒有先選中它,右鍵單擊單元格時,RowIndex始終爲0.我試圖找到上下文菜單條形項目的父項,並將該鏈條處理到單元格/列,但ContextMenuStrip.Parent始終爲空。有沒有一種方法可以在不使用菜單位置的情況下執行此操作?如果我必須使用位置,是否有防止欺騙的方法?- 我如何*總是*獲取關聯的單元格/行?

回答

1

右鍵單擊不是調用上下文菜單的唯一方法。 Shift + F10或上下文菜單鍵也會調用它。從鍵盤調用上下文菜單不會給出X,Y座標,因此要知道菜單的上下文應該是什麼的唯一方法是「當前選定的項目」的概念。

我所做的是重寫MouseDown事件,如果按下右鍵,請選擇鼠標下的單元格。

+0

Oooooh,好主意!我會嘗試它,並會讓你知道。 – 2011-05-02 16:02:24

+0

我最終不得不通過鼠標右鍵單擊來設置DataGridView的CurrentCell屬性,而不是選擇單元格。但處理鼠標並將其設置完美。謝謝! – 2011-05-02 16:35:38

相關問題