これはコンソールアプリケーションの場合、ReadLineの代替手段を書くのは難しくありません。
Console.WriteLine("Start to type. Press ctrl-enter to quit.")
' Keep track of the pressed keys.
Dim input = New StringBuilder()
' An alternative could be a counter. Accept only n numbers of characters.
Dim isTyping As Boolean = True
While isTyping
' Wait until a key was pressed.
Dim k = Console.ReadKey()
' If ctrl-enter was pressed exit the loop (no need to add this to input).
' Otherwise append the key to the input variable.
If k.Key = ConsoleKey.Enter AndAlso k.Modifiers = ConsoleModifiers.Control Then
isTyping = False
Else
input.Append(k.KeyChar)
End If
End While
' You can read what was typed, the pressed keys were send to the console.
Console.WriteLine()
Console.WriteLine("And the result is: {0}", input.ToString)
Console.WriteLine()
Console.WriteLine("Press a key to stop the program.")
' Notice the parameter. The pressed key will not be send to the console.
Console.ReadKey(True)
これは、特定のキーを検出する方法に関する質問にも答えます。
あなたのケースでは、1つのキーが必要なのでさらに簡単です。したがってループは必要ありません。
Dim k = Console.ReadKey()
Console.WriteLine("Key pressed: {0}", k.KeyChar)
ユーザーが入力した内容を解析して、それに応じて処理します。 – Plutonix
どうすればいいですか? –
Enterキーが押されるまで、少なくとも** ReadLine()はブロックされません。必要なのは[KeyAvailable()](https://msdn.microsoft.com/en-us/library/system.console.keyavailable(v = vs.110).aspx)と[ReadKey()](https: //msdn.microsoft.com/en-us/library/x3h8xffw(v=vs.110).aspx)タイトなループで...しかし、これはあなたが入力されたものの表示を管理し、手動でカーソルを移動する必要があることを意味します。これは思うよりも達成が難しいでしょう! –