2013-02-18 89 views
4

當我第一次按下控制鍵(左一個),然後單擊鼠標左鍵,爲什麼下面的代碼被執行。我正在修改現有代碼,並且下面的代碼已經存在。我想以前沒有人嘗試過,按住Ctrl鍵,它只能用於鼠標左鍵單擊,並且一直適用於這種情況。但是我想要在按下控制鍵的同時按下鼠標左鍵來執行不同的代碼。檢測Ctrl +向左(鼠標左鍵)在MouseDown事件處理程序

private void treeList1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
{ 
    TreeList tree = sender as TreeList; 

    if (e.Button == MouseButtons.Right && ModifierKeys == Keys.None && tree.State == TreeListState.Regular) 
    { 
     //the code that is here gets executed 
     MessageBox.Show("I am here"); 
    } 
} 

我非常感謝任何提示或幫助。

P.S.我想補充一點,在上面的例子中,當我檢查e.button的值時,它顯示出等於Right,儘管我按下了鼠標左鍵和Ctrl鍵。這對我來說是個謎。

親愛的StackOverflow研究員:我發現了這個問題,因爲我使用的是虛擬機上的MAC,我不得不禁用我的虛擬機的偏好某些鍵映射到現在我原來的代碼工作。感謝你的幫助。

+0

ModifierKeys在調試時包含什麼? 顯然它不包含Control。 – nzic 2013-02-18 23:26:01

+0

這是.net 4.0嗎?這可能幫助:http://stackoverflow.com/questions/4705428/test-if-the-ctrl-key-is-down-using-c-sharp – 2013-02-18 23:36:28

+0

的事件會得到預期解僱,你肯定的是' msgbox'代碼被執行? – 2013-02-18 23:53:39

回答

0

的問題是,有MAC,我的Windows虛擬機之間的鍵映射需要加以禁止。感謝所有幫助

+0

有趣。你是否改變了條件或陷入了'Keys.None'的工作? – 2013-02-19 16:47:56

+0

還沒有試過,我會和我一定會讓你知道的。再次感謝。 – user1298925 2013-02-19 18:00:29

9

Keys.None具有爲0的值,使得當單獨使用時「沒有鍵被按下」,它難以檢測。這個:

void Form1_MouseDown(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Left && (ModifierKeys & Keys.None) == Keys.None) 
     { 
      MessageBox.Show("No key was held down."); 
     } 
    } 

無論組合鍵是什麼組合,只要用左鍵點擊就會彈出消息框。

然而,這樣的:

void Form1_MouseDown(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Left && (ModifierKeys & Keys.Control) == Keys.Control) 
     { 
      MessageBox.Show("Control key was held down."); 
     } 
    } 

只會彈出當Control鍵被按下(和鼠標左鍵點擊)一個消息框。

嘗試顛倒你的條件,並檢測何時按下Control鍵時(而不是檢測何時沒有按鍵被按下)。話雖這麼說,我有一個很難得到相同的代碼與Keys.ControlKeyKeys.LControlKey出於某種原因工作,所以隔離需要多一點研究左側的控制鍵。

+0

我試過你的第一個代碼框,它不起作用。您可以在e之後編輯需要的內容嗎?也許我正在填補你有錯誤價值的空白。所以,我還沒有任何答案。當我點擊鼠標左鍵並按下Ctrl鍵時,它會執行鼠標右鍵單擊的代碼!我還沒有嘗試過你的第二個盒子。謝謝。 – user1298925 2013-02-19 04:11:16

+0

沒錯,我只是看到了什麼失蹤..抱歉!編輯... – 2013-02-19 04:36:06

+0

我試過這個代碼(第二代碼塊) - 它的工作原理!謝謝你,@ Mat'sMug! :) – 2016-01-09 12:40:11