2016-07-26 5 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プロパティを使用できます。 –

関連する問題