我想在控制台中使用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;
}
}
答案 0 :(得分:0)
你可以设置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("..");
}