如何在控制台中获得Ctrl + C作为输入
问题描述:
我想在控制台中使用ctrl + c作为输入。我可以禁用 ctrl + c终止控制台。但我不能使用Ctrl + C来获得输入。我怎样才能得到ctrl + c作为输入?如何在控制台中获得Ctrl + C作为输入
Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) =>
{
var isctrlc = e.SpecialKey == ConsoleSpecialKey.ControlC;
if (isctrlc)
{
e.Cancel = true;
}
};
k = Console.ReadKey(true);
if((k.Modifiers & ConsoleModifiers.Control) != 0)
{
if((k.Key & ConsoleKey.C)!=0)
{
break;
}
}
答
您可以设置e.Cancel = true;在CancelKeyPress事件处理程序中。我测试了以下代码片段。有用。
class Program
{
static void Main(string[] args)
{
Console.CancelKeyPress += Console_CancelKeyPress;
while (true)
{
Thread.Sleep(100);
Console.WriteLine("..");
}
}
private static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
e.Cancel = true;
Console.WriteLine("Cancel key trapped. Execution will not terminate.");
}
}
更新:
您可以使用下面的属性来实现你想要的。
Console.TreatControlCAsInput = true;
while (true)
{
var k = Console.ReadKey(true);
if ((k.Modifiers & ConsoleModifiers.Control) != 0)
{
if ((k.Key & ConsoleKey.C) != 0)
{
break;
}
}
Thread.Sleep(100);
Console.WriteLine("..");
}
+0
当Ctrl + C输入时,我可以停止终止。在这里,我想知道如何使用Ctrl + C打破循环。 –
+0
您可以使用Console.TreatControlCAsInput属性。 –
的可能的复制[我如何在C#控制台应用程序陷阱CTRL-C(http://*.com/questions/177856/how-do-i-trap-ctrl-c-in- ac-sharp-console-app) –
但是在这里我想让Ctrl + C打破我的代码。我无法达到休息。当我输入Ctrl + C作为输入时,如何更改要停止循环的代码。 –
你有答案吗? –