C# 将文本作为输入写入控制台输出
我正在用C#编写一个控制台应用程序,程序开头有一个问题:C# 将文本作为输入写入控制台输出,c#,.net,console-application,C#,.net,Console Application,我正在用C#编写一个控制台应用程序,程序开头有一个问题: Console.WriteLine("Would you like to create the config folder? (y/n)"); 我想在这行后面设置一个默认的“y”,这样用户只需按Enter键就足够了。 (如果他想要“n”,则用退格删除) 这可能吗?如何使用?只需使用 Console.WriteLine(""); Console.Write("y") 所以Y在下一行,他们只需按enter键。在我看来,这种行为有点奇怪。我
Console.WriteLine("Would you like to create the config folder? (y/n)");
我想在这行后面设置一个默认的“y”,这样用户只需按Enter键就足够了。
(如果他想要“n”,则用退格删除)
这可能吗?如何使用?只需使用
Console.WriteLine("");
Console.Write("y")
所以Y在下一行,他们只需按enter键。在我看来,这种行为有点奇怪。我要做的是:
Console.WriteLine("Would you like to create the config folder? (Y/N) [Y]");
ConsoleKey optionKey;
do
{
ConsoleKeyInfo key = Console.ReadKey(true);
optionKey = key.Key == ConsoleKey.Enter ? ConsoleKey.Y : key.Key;
} while (optionKey != ConsoleKey.Y && optionKey != ConsoleKey.N);
Console.WriteLine(optionKey);
if (optionKey != ConsoleKey.N)
{
// Do your stuff
}
这里的正确行为应该是
Console.WriteLine("Would you like to create the config folder? (y/n) [y]");
这告诉用户,y
是默认值,只需按enter键即可自动选择。我认为如果用户想要选择n
,这会更快,因为这样用户就不必删除y
,然后输入他的选择
考虑用户是否必须通过多个问题,并且必须为所有问题选择n
。这会有点烦人
编写代码的简单方法(只是一个伪代码)是:
如果仍要编写可变输出,请使用:
Console.WriteLine("Would you like to create the config folder? (y/n)");
SendKeys.SendWait("y");
Console.ReadLine();
非常感谢。但是有了这个,我不能删除y,如果不需要的话。我在回答之前尝试过,但它不允许你删除光标左侧的内容。@Pistaatortenesz如果你有
Console.ReadKey()
在我发布之后,你只会得到backspace键,将其改为Console.ReadLine()代码>不,没有。有一个控制台。ReadLine();您必须修复此问题:(y/n)[y]");代码>:)您能否在控制台应用程序中使用SendKeys
?它位于表单
名称空间中。这不会将输入发送到焦点吗?什么是应用程序最小化或在后台?您可以尝试以下方法:)。但您也可以尝试使用Keyboard.SendKeys功能,该功能也可以执行相同的操作。它还表示“活动窗口”。。。
Console.WriteLine("Would you like to create the config folder? (y/n)");
SendKeys.SendWait("y");
Console.ReadLine();