2011-01-18 65 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子句中如何?这种方式只有在条件满足时才会中断。