【问题标题】:System.Windows.Input.Key is not working in c#System.Windows.Input.Key 在 c# 中不起作用
【发布时间】:2021-08-04 18:12:52
【问题描述】:

我正在尝试在 c# 中使用 System.Windows.Input 中的 Keyboard.isKeyDown 和 Keyboard.isKeyUp 函数。

这些函数似乎在工作,但它不允许我使用 System.Windows.Input.Key 中的密钥,所以我无法调用这些函数。

我该如何解决这个问题?

这是我的代码:

using System.Diagnostics;
using System.Windows.Input;

namespace rubicksTimer
{
    
    public class Timer
    {

        public static double SolveTimer ()
        {
            Stopwatch sw = new Stopwatch();

            while (Keyboard.IsKeyUp(Key.Space))
            {
                //empty loop
            }
            
            while (Keyboard.IsKeyDown(Key.Space))
            {
                //empty loop
            }
            
            sw.Start();

            while (Keyboard.IsKeyUp(Key.Space))
            {
                //empty loop
            }

            sw.Stop();

            return (double) (sw.ElapsedMilliseconds) / 1000;
        }
    }
}

【问题讨论】:

  • 在你提供的代码中,它没有显示你是如何调用这些的。您能详细解释一下您要完成的工作吗?
  • 我正在尝试制作一个计时器,它会在我释放空格键时启动,当我再次按下它时停止
  • 我明白了,你怎么称呼这段代码?
  • (我不确定我是否理解了这个问题)我在主类中调用它,方式如下:double time = Timer.SolveTimer();

标签: c# keyboard key


【解决方案1】:

只需对 e.Key == Key.Space 使用 KeyDown 和 KeyUp 事件

【讨论】:

  • 我不明白这个答案。你能解释一下你的意思吗?
  • 你的窗口有 KeyDown 和 KeyUp 事件,你可以在那里处理你的命令。这是一种更好的处理方式,而不是使用 while() 循环。
  • 但这如何解决我无法使用 System.Windows.Input.Key 的问题?
  • 解释'无法使用 System.Windows.Input.Key' 我只是在 e.Key == Key.Space 上面使用它
  • 只需注册这些事件并在 KeyDown if (e.Key == Key.Space) sw.Start() 和 KeyUp 事件中使用 if (e.Key == Key.Space) sw。停止();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 1970-01-01
  • 2015-09-08
  • 2014-04-29
  • 2018-03-04
  • 1970-01-01
相关资源
最近更新 更多