Disabling User Input in a Console Application(在控制台应用程序中禁用用户输入)
问题描述
我正在制作一个基于 C# 控制台文本的游戏,并且因为我希望它看起来更老派,所以我添加了一种效果,使任何文本(描述、教程、对话)看起来都像是正在输入的,并且它看起来像这样:
I am making a C# console text-based game, and because I wanted it to look more old-school, I've added an effect so that any text (descriptions, tutorials, dialogues) looks like it's being typed, and it looks like this:
public static int pauseTime = 50;
class Writer
{
public void WriteLine(string myText)
{
int pauseTime = MainClass.time;
for (int i = 0; i < myText.Length; i++)
{
Console.Write(myText[i]);
System.Threading.Thread.Sleep(pauseTime);
}
Console.WriteLine("");
}
}
但后来我觉得这可能很烦人,我想添加一个选项来跳过效果并让所有文本立即出现.所以我选择了 Enter 键作为跳过"键,它使文本立即出现,但按 Enter 键也会创建一个新的文本行,打乱文本.
But then I thought that this might be annoying and I thought about adding an option to skip the effect and make all the text appear at once. So I chose the Enter key to be the "skip" key, and it makes the text appear at once, but pressing the enter key also creates a new text line, scrambling the text.
所以我想以某种方式禁用用户输入,以便用户无法在控制台中写入任何内容.有没有办法,例如,禁用命令提示符(命令提示符不是指 cmd.exe,而是闪烁的_"下划线符号)?
So I want to somehow disable user input, so that the user cannot write anything in the console. Is there a way to, for example, disable the command prompt (and by command prompt I don't mean cmd.exe, but the flashing "_" underscore sign)?
推荐答案
我认为你想要的是 Console.ReadKey(true)
它将拦截按下的键并且不会显示它.
I think what you want is Console.ReadKey(true)
which will intercept the pressed key and won't display it.
class Writer
{
public void WriteLine(string myText)
{
for (int i = 0; i < myText.Length; i++)
{
if (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Enter)
{
Console.Write(myText.Substring(i, myText.Length - i));
break;
}
Console.Write(myText[i]);
System.Threading.Thread.Sleep(pauseTime);
}
Console.WriteLine("");
}
}
来源:MSDN 文章
这篇关于在控制台应用程序中禁用用户输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在控制台应用程序中禁用用户输入
基础教程推荐
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- rabbitmq 的 REST API 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- 将 XML 转换为通用列表 2022-01-01
- MS Visual Studio .NET 的替代品 2022-01-01
- c# Math.Sqrt 实现 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01