我想调试一个程序的一部分,用于响应键盘输入,如Ctrl + ↑。调试类似'Ctrl +向上箭头'的键盘事件
因此,我在该区域感兴趣的代码中放置了一个断点。但是,一旦我按下Ctrl键,程序将跳转到该断点。发生这种情况之前我按了一个箭头键,所以我发现这种情况很难调试。
那么,如何调试多键输入事件,如Ctrl + ↑?
我想调试一个程序的一部分,用于响应键盘输入,如Ctrl + ↑。调试类似'Ctrl +向上箭头'的键盘事件
因此,我在该区域感兴趣的代码中放置了一个断点。但是,一旦我按下Ctrl键,程序将跳转到该断点。发生这种情况之前我按了一个箭头键,所以我发现这种情况很难调试。
那么,如何调试多键输入事件,如Ctrl + ↑?
如果您使用Visual Studio调试代码,则可以通过向断点添加条件来调试此情况。
要做到这一点,右键单击断点图标,你的代码语句的左侧,然后单击Condition...
将适用于您的情况的情况的一个例子是:
e.Control && e.KeyCode == Keys.Up
现在你可以调试多键输入事件,如Ctrl + ↑而不需要更改任何代码。
您可以使用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菜单栏中选择查看 - >输出,可以得到输出。
你使用什么事件?的KeyDown?尝试使用KeyUp。只有释放CTRL +组合键后才会触发。
看看Debug.Assert方法。它将允许您只能根据条件进行调试。执行将继续,直到条件为假。你可以做一些像(伪代码):Debug.Assert(NOT up key pressed);
这将使它忽略任何按键,而是向上键。
一般来说,您唯一的选择是打印一些消息到控制台或错误日志。否则调试器UI会干扰你的代码。例如,Visual Studio调试器可以在打断点时打印表达式的值,因此您不需要编写特殊代码。
将断点放在if
子句中如何?这种方式只有在条件满足时才会中断。
KEY-UP解决了我的问题。但是抱歉,我选择了另一个正确的答案,因为它更接近我问过的问题。但为了解决我真正的问题,我从你的帖子中获得了Key-Up的想法。 – Bohn 2011-01-18 21:38:37
大声笑我不明白为什么标记为答案的帖子更接近你的问题,而我的想法解决了这个问题,但确定:)让它成为。您至少可以投票给我:) – dzendras 2011-01-18 22:48:00