调试键盘事件,例如'Ctrl + Up Arrow'

时间:2011-01-18 20:48:04

标签: c# winforms keyboard-events

我想调试一个用于响应键盘输入的程序的一部分,例如 Ctrl +

所以,我在区域感兴趣的代码中放了一个断点。但是,一旦按下 Ctrl 键,程序就会跳转到该断点。 之前发生了我按了一个箭头键,所以我发现这种情况很难调试。

那么,如何调试多键输入事件,例如 Ctrl +

6 个答案:

答案 0 :(得分:5)

如果您使用Visual Studio调试代码,则可以通过向断点添加条件来调试此情况。

要执行此操作,请右键单击代码语句左侧的断点图标,然后单击 Condition... 适用于您的情况的条件示例为:

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

现在您可以调试多键输入事件,例如 Ctrl + ,而无需更改任何代码。

答案 1 :(得分: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菜单栏中,选择View-> Output以查看输出。

答案 2 :(得分:2)

您使用什么事件?的KeyDown?尝试使用KeyUp。在释放CTRL +组合键之前,它不会触发。

答案 3 :(得分:2)

如何将断点放在if子句中?这样只有在满足条件时它才会中断。

答案 4 :(得分:1)

查看Debug.Assert方法。它将允许您仅根据条件进行调试。执行将继续,直到条件为假。您可以执行类似(伪代码)的操作:Debug.Assert(NOT up key pressed); 这将使它忽略任何按键但按下向上键。

答案 5 :(得分:1)

通常,您唯一的选择是将某些消息打印到控制台或错误日志。否则,调试器UI将干扰您的代码。例如,Visual Studio调试器可以在命中断点时打印表达式的值,因此您不需要编写特殊代码。