2011-01-18 76 views
4

我想調試一個程序的一部分,用於響應鍵盤輸入,如Ctrl + ↑調試類似'Ctrl +向上箭頭'的鍵盤事件

因此,我在該區域感興趣的代碼中放置了一個斷點。但是,一旦我按下Ctrl鍵,程序將跳轉到該斷點。發生這種情況之前我按了一個箭頭鍵,所以我發現這種情況很難調試。

那麼,如何調試多鍵輸入事件,如Ctrl + ↑

回答

5

如果您使用Visual Studio調試代碼,則可以通過向斷點添加條件來調試此情況。

要做到這一點,右鍵單擊斷點圖標,你的代碼語句的左側,然後單擊Condition...將適用於您的情況的情況的一個例子是:

e.Control && e.KeyCode == Keys.Up 

現在你可以調試多鍵輸入事件,如Ctrl + ↑而不需要更改任何代碼。

4

您可以使用System.Diagnostics.Debug.WriteLine將調試信息寫入Listeners集合中的跟蹤偵聽器。

實施例:

private void Form1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.Control && e.KeyCode == Keys.Up) 
     System.Diagnostics.Debug.WriteLine("Up with control have pressed"); 
} 

在Visual Studio菜單欄中選擇查看 - >輸出,可以得到輸出。

2

你使用什麼事件?的KeyDown?嘗試使用KeyUp。只有釋放CTRL +組合鍵後纔會觸發。

+0

KEY-UP解決了我的問題。但是抱歉,我選擇了另一個正確的答案,因爲它更接近我問過的問題。但爲了解決我真正的問題,我從你的帖子中獲得了Key-Up的想法。 – Bohn 2011-01-18 21:38:37

+0

大聲笑我不明白爲什麼標記爲答案的帖子更接近你的問題,而我的想法解決了這個問題,但確定:)讓它成爲。您至少可以投票給我:) – dzendras 2011-01-18 22:48:00

1

看看Debug.Assert方法。它將允許您只能根據條件進行調試。執行將繼續,直到條件爲假。你可以做一些像(僞代碼):Debug.Assert(NOT up key pressed); 這將使它忽略任何按鍵,而是向上鍵。

1

一般來說,您唯一的選擇是打印一些消息到控制檯或錯誤日誌。否則調試器UI會干擾你的代碼。例如,Visual Studio調試器可以在打斷點時打印表達式的值,因此您不需要編寫特殊代碼。

2

將斷點放在if子句中如何?這種方式只有在條件滿足時纔會中斷。