如何在控制台中获得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; 
    } 
} 
+4

的可能的复制[我如何在C#控制台应用程序陷阱CTRL-C(http://*.com/questions/177856/how-do-i-trap-ctrl-c-in- ac-sharp-console-app) –

+0

但是在这里我想让Ctrl + C打破我的代码。我无法达到休息。当我输入Ctrl + C作为输入时,如何更改要停止循环的代码。 –

+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(".."); 
     } 
+0

当Ctrl + C输入时,我可以停止终止。在这里,我想知道如何使用Ctrl + C打破循环。 –

+0

您可以使用Console.TreatControlCAsInput属性。 –