2016-07-26 78 views
0

我想在控制檯中使用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://stackoverflow.com/questions/177856/how-do-i-trap-ctrl-c-in- ac-sharp-console-app) –

+0

但是在這裏我想讓Ctrl + C打破我的代碼。我無法達到休息。當我輸入Ctrl + C作爲輸入時,如何更改要停止循環的代碼。 –

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

當Ctrl + C輸入時,我可以停止終止。在這裏,我想知道如何使用Ctrl + C打破循環。 –

+0

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

相關問題