如何在控制台中获得Ctrl+C作为输入

本文关键字:Ctrl+C 输入 控制台 | 更新日期: 2023-09-27 17:58:39

我想在控制台中使用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;
   }
}

如何在控制台中获得Ctrl+C作为输入

您可以设置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("..");
        }