簡體   English   中英

如何在控制台中獲取Ctrl + C作為輸入

[英]How can i get the Ctrl+C as input in console

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM