2012-10-30 96 views
0

我有一個DataGridView與上下文菜單。一個菜單項是複製(使用Ctrl + C熱鍵)。我想要做的就是獲取當前鼠標位置以複製用戶右鍵單擊的單元格,或者在使用熱鍵時獲取當前選定的單元格。在這兩種情況下,menu_Click事件被解僱。我怎麼知道它是來自熱鍵還是上下文菜單?如何判斷contextmenu項目是用鼠標點擊還是用熱鍵點擊?

+2

沒有右鍵單擊某個單元格選擇該單元格?如果不是的話,我會試着讓它工作,因爲複製未被選中的內容可能會讓用戶感到困惑。 – HugoRune

+0

看看[RoutedEventArgs.Source屬性](http://msdn.microsoft.com/en-us/library/system.windows.routedeventargs.source.aspx)。 –

+0

不,不是單元格沒有從右鍵單擊中選擇,而是稍後的幾行代碼,它是!簡單的解決方案總是最好的。感謝大家的幫助。我可以投票評論嗎? – Terry

回答

1

據我所知,你可以Hook所有的MouseKeyboard事件來檢測輸入源。

你應該看看這個CodeProject上文章,Processing Global Mouse and Keyboard Hooks in C#

MSDN Reference

一個全局鉤子監視在同一桌面與調用線程的所有線程的消息。 A 線程專用掛鉤僅監視單個線程的消息。全局鉤子過程可以在與調用線程相同的桌面中的任何應用程序的上下文中調用,因此該過程必須位於單獨的DLL模塊中。線程特定的鉤子過程僅在關聯線程的上下文中調用。

相關問題