私はConsole.ReadKey()
を使用してユーザー入力を読み取るC#でコンソールアプリケーションを作成しています。これは、これに似ているコードを持っていますC#console app:ReadKey()ループを使用しているときにユーザーがキーを押さないようにするにはどうすればよいですか?
while(true)
{
switch(Console.ReadKey(true).Key)
{
case ConsoleKey.Enter:
//code
case ConsoleKey.UpArrow:
//code
case ConsoleKey.DownArrow:
//code
case ConsoleKey.Escape:
//code
}
}
さて問題は、ユーザーが半分以上秒のための任意のキーを押したままのときに、Windowsは、複数のキープレスとして登録、です。したがって、例の場合、Enterキーが1秒間押されると、case ConsoleKey.Enter:
の後に続くコードは約10回実行され、私はそれを望んでいません。
ボタンを押したままにすると、キーを1回押すだけで登録できますか?そのためにWindows Formsを使用する必要がありますか? (現在私のコードはConsoleクラスに依存しています)。
@HenkHoltermanを誰かが意図的にボタンをスパムした場合、私はそれで大丈夫ですよ。偶然にボタンを長押ししてしまうと、コードが複数回実行されることは望ましくありません。 – goldenapple