【问题标题】:How to get IsKeyDown method to work in C#如何让 IsKeyDown 方法在 C# 中工作
【发布时间】:2012-10-10 16:11:10
【问题描述】:

我不知道如何让这个方法起作用:

System.Windows.Input.Keyboard.IsKeyDown(System.Windows.Input.Key)

对象浏览器显示以下内容:

public static bool IsKeyDown(System.Windows.Input.Key key)
System.Windows.Input.Keyboard 的成员
总结:
确定是否按下了指定的键。
参数:
key:指定的键。
返回值:
如果键处于关闭状态,则为 true;否则为假。

好的,所以它是键盘的成员,对吧?我使用了以下代码: 键盘测试 = new Keyboard();

但是当我输入 test 然后是点时​​,IsKeyDown 不是一个选项。唯一的选项来自 Windows.Forms 成员。我在这里想念什么?谢谢。

【问题讨论】:

  • 我认为这是因为Keyboard 类仅适用于控制台应用程序。
  • 谢谢。即使表单未处于活动状态,我如何获得当前按下的键?换句话说,即使我的程序被最小化,我也需要一种能够检测按键的方法。

标签: c# winforms methods input


【解决方案1】:

添加PresentationCore.dll 程序集作为参考。

添加WindowsBase.dll 程序集作为参考。

测试代码:

private void buttonMisc_Click(object sender, EventArgs e)
{
    if (System.Windows.Input.Keyboard.IsKeyDown(System.Windows.Input.Key.LeftShift) == true)
        MessageBox.Show("Got it!");
}

【讨论】:

  • 所以当用户用鼠标点击按钮时,您检测到按键按下了吗? ://
  • 是的。当我按住左移并用鼠标单击按钮时,我会收到消息框。
  • 非常感谢,史蒂夫·韦伦斯。效果很好。我对其进行了一些更改,即使将表单最小化也可以使用。事实上,当我为第一个字母按下 shift 键时,消息就出现了。再次感谢!
  • 这有助于我检测单击菜单项时是否按住了 Left Shift。 IsKeyDown 的 Microsoft 帮助不完整,它提到您需要程序集 PresentationCore(它提供 Keyboard 类),但没有提到 WindowsBase(它为 Key 类提供所有关键定义)。
【解决方案2】:

IsKeyDown 是静态的,所以你需要像使用它一样

Keyboard.IsKeyDown()

不适用于实例化对象。

您还需要确保顶部有正确的 using 语句:

using System.Windows.Input;

编辑

进一步检查,键盘是一个静态类...所以你不能Keyboard test = new Keyboard();

【讨论】:

  • 我不确定你的意思。当我输入您的代码时,按下点后,该方法不会出现。除了 PresentationCore 之外,我还需要添加特殊参考吗?
  • @user1739957 你应该可以简单地输入Keyboard.IsKeyDown(Key.A)
  • 不!在我输入 dote 后,它不是一个选项!
  • @user1739957 如果你有 Keyboard test = new Keyboard,你需要删除它,因为它不会编译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
相关资源
最近更新 更多