Console.CancelKeyPress Console.CancelKeyPress Console.CancelKeyPress Console.CancelKeyPress Event

定義

Control の修飾子キー (Ctrl) と C コンソール キー (c) または中断キーが同時にプッシュされた場合 (Ctrl + C または Ctrl + Break) に発生します。Occurs when the Control modifier key (Ctrl) and either the C console key (C) or the Break key are pressed simultaneously (Ctrl+C or Ctrl+Break).

public:
 static event ConsoleCancelEventHandler ^ CancelKeyPress;
public static event ConsoleCancelEventHandler CancelKeyPress;
member this.CancelKeyPress : ConsoleCancelEventHandler 
Public Shared Custom Event CancelKeyPress As ConsoleCancelEventHandler 

例を次に示しますが、どのCancelKeyPressイベントを使用します。The following example demonstrates how the CancelKeyPress event is used. Ctrl キーを押しながら C キーを押すと、読み取り操作が中断し、myHandlerイベント ハンドラーが呼び出されます。When you press Ctrl+C, the read operation is interrupted and the myHandler event handler is invoked. イベント ハンドラーに入ったときに、ConsoleCancelEventArgs.Cancelプロパティはfalse、イベント ハンドラーの終了時に、現在のプロセスは終了ことを意味します。Upon entry to the event handler, the ConsoleCancelEventArgs.Cancel property is false, which means that the current process will terminate when the event handler terminates. ただし、イベント ハンドラーの設定、ConsoleCancelEventArgs.Cancelプロパティをtrueつまり、プロセスは終了しませんし、読み取り操作が再開されます。However, the event handler sets the ConsoleCancelEventArgs.Cancel property to true, which means that the process will not terminate and the read operation will resume.

using namespace System;

void OnCancelKeyPressed(Object^ sender, 
    ConsoleCancelEventArgs^ args)
{
    Console::WriteLine("{0}The read operation has been interrupted.",
        Environment::NewLine);

    Console::WriteLine("  Key pressed: {0}", args->SpecialKey);

    Console::WriteLine("  Cancel property: {0}", args->Cancel);

    // Set the Cancel property to true to prevent the process from 
    // terminating.
    Console::WriteLine("Setting the Cancel property to true...");
    args->Cancel = true;

    // Announce the new value of the Cancel property.
    Console::WriteLine("  Cancel property: {0}", args->Cancel);
    Console::WriteLine("The read operation will resume...{0}",
        Environment::NewLine);
}

int main()
{       
    // Clear the screen.
    Console::Clear();

    // Establish an event handler to process key press events.
    Console::CancelKeyPress += 
        gcnew ConsoleCancelEventHandler(OnCancelKeyPressed);

    while (true)
    {
        // Prompt the user.
        Console::Write("Press any key, or 'X' to quit, or ");
        Console::WriteLine("CTRL+C to interrupt the read operation:");

        // Start a console read operation. Do not display the input.
        ConsoleKeyInfo^ keyInfo = Console::ReadKey(true);

        // Announce the name of the key that was pressed .
        Console::WriteLine("  Key pressed: {0}{1}", keyInfo->Key, 
            Environment::NewLine);

        // Exit if the user pressed the 'X' key.
        if (keyInfo->Key == ConsoleKey::X)
        {
            break;
        }
    }
}
// The example displays output similar to the following:
//    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
//    Key pressed: J
//    
//    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
//    Key pressed: Enter
//    
//    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
//    
//    The read operation has been interrupted.
//    Key pressed: ControlC
//    Cancel property: False
//    Setting the Cancel property to true...
//    Cancel property: True
//    The read operation will resume...
//    
//    Key pressed: Q
//    
//    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
//    Key pressed: X
using System;

class Sample 
{
    public static void Main()
    {
        ConsoleKeyInfo cki;

        Console.Clear();

        // Establish an event handler to process key press events.
        Console.CancelKeyPress += new ConsoleCancelEventHandler(myHandler);
        while (true) {
            Console.Write("Press any key, or 'X' to quit, or ");
            Console.WriteLine("CTRL+C to interrupt the read operation:");

            // Start a console read operation. Do not display the input.
            cki = Console.ReadKey(true);

            // Announce the name of the key that was pressed .
            Console.WriteLine("  Key pressed: {0}\n", cki.Key);

            // Exit if the user pressed the 'X' key.
            if (cki.Key == ConsoleKey.X) break;
        }
    }

    protected static void myHandler(object sender, ConsoleCancelEventArgs args)
    {
        Console.WriteLine("\nThe read operation has been interrupted.");

        Console.WriteLine("  Key pressed: {0}", args.SpecialKey);

        Console.WriteLine("  Cancel property: {0}", args.Cancel);

        // Set the Cancel property to true to prevent the process from terminating.
        Console.WriteLine("Setting the Cancel property to true...");
        args.Cancel = true;

        // Announce the new value of the Cancel property.
        Console.WriteLine("  Cancel property: {0}", args.Cancel);
        Console.WriteLine("The read operation will resume...\n");
    }
}
// The example displays output similar to the follwoing:
//    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
//      Key pressed: J
//    
//    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
//      Key pressed: Enter
//    
//    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
//    
//    The read operation has been interrupted.
//      Key pressed: ControlC
//      Cancel property: False
//    Setting the Cancel property to true...
//      Cancel property: True
//    The read operation will resume...
//    
//      Key pressed: Q
//    
//    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
//      Key pressed: X
Class Sample
    Public Shared Sub Main() 
        Dim cki As ConsoleKeyInfo
        
        Console.Clear()
        
        ' Establish an event handler to process key press events.
        AddHandler Console.CancelKeyPress, AddressOf myHandler

        While True
            Console.Write("Press any key, or 'X' to quit, or ")
            Console.WriteLine("CTRL+C to interrupt the read operation:")
            
            ' Start a console read operation. Do not display the input.
            cki = Console.ReadKey(True)
            
            ' Announce the name of the key that was pressed .
            Console.WriteLine("  Key pressed: {0}" & vbCrLf, cki.Key)
            
            ' Exit if the user pressed the 'X' key.
            If cki.Key = ConsoleKey.X Then Exit While
        End While
    End Sub

    Protected Shared Sub myHandler(ByVal sender As Object, _
                                   ByVal args As ConsoleCancelEventArgs) 
        Console.WriteLine(vbCrLf & "The read operation has been interrupted.")
        
        Console.WriteLine("  Key pressed: {0}", args.SpecialKey)
        
        Console.WriteLine("  Cancel property: {0}", args.Cancel)
        
        ' Set the Cancel property to true to prevent the process from terminating.
        Console.WriteLine("Setting the Cancel property to true...")
        args.Cancel = True
        
        ' Announce the new value of the Cancel property.
        Console.WriteLine("  Cancel property: {0}", args.Cancel)
        Console.WriteLine("The read operation will resume..." & vbCrLf)
    End Sub
End Class
' The example diplays output similar to the following:
'    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
'     Key pressed: J
'    
'    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
'     Key pressed: Enter
'    
'    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
'    
'    The read operation has been interrupted.
'     Key pressed: ControlC
'     Cancel property: False
'    Setting the Cancel property to true...
'     Cancel property: True
'    The read operation will resume...
'    
'     Key pressed: Q
'    
'    Press any key, or 'X' to quit, or CTRL+C to interrupt the read operation:
'     Key pressed: X

注釈

このイベントと組み合わせて使用System.ConsoleCancelEventHandlerSystem.ConsoleCancelEventArgsします。This event is used in conjunction with System.ConsoleCancelEventHandler and System.ConsoleCancelEventArgs. CancelKeyPressイベントがイベント ハンドラーが実行を続行するか、終了するかどうかを決定するために CTRL + C シグナルをインターセプトするコンソール アプリケーションを使用します。The CancelKeyPress event enables a console application to intercept the Ctrl+C signal so the event handler can decide whether to continue executing or terminate. イベントの処理の詳細については、「処理とイベントの発生」を参照してください。For more information about handling events, see Handling and Raising Events.

ユーザーは、Ctrl キーを押しながら C キーまたは Ctrl + Break を押したとき、CancelKeyPressイベントが発生したとアプリケーションのConsoleCancelEventHandlerイベント ハンドラーが実行されます。When the user presses either Ctrl+C or Ctrl+Break, the CancelKeyPress event is fired and the application's ConsoleCancelEventHandler event handler is executed. イベント ハンドラーに渡される、ConsoleCancelEventArgsを 2 つの便利なプロパティを持つオブジェクト。The event handler is passed a ConsoleCancelEventArgs object that has two useful properties:

  • SpecialKey、、ユーザーが ctrl キーを押しながら C キーを押して結果として、ハンドラーが呼び出されたかどうかを判断できます (プロパティの値がConsoleSpecialKey.ControlC) または Ctrl + Break (プロパティの値がConsoleSpecialKey.ControlBreak)。SpecialKey, which allows you to determine whether the handler was invoked as a result of the user pressing Ctrl+C (the property value is ConsoleSpecialKey.ControlC) or Ctrl+Break (the property value is ConsoleSpecialKey.ControlBreak).

  • Cancel、どのアプリケーションにする必要があります、ユーザーに応答キーを押して CTRL + C または Ctrl + break を判断できます。Cancel, which allows you to determine how to your application should respond to the user pressing Ctrl+C or Ctrl+Break. 既定で、Cancelプロパティはfalse、原因プログラムの終了イベント ハンドラーの終了時に実行します。By default, the Cancel property is false, which causes program execution to terminate when the event handler exits. そのプロパティを変更するtrueこと、アプリケーションが実行を継続する必要がありますを指定します。Changing its property to true specifies that the application should continue to execute.

ヒント

使用することができます、アプリケーションにシンプルな要件がある場合、TreatControlCAsInputこのイベントではなくプロパティ。If your application has simple requirements, you can use the TreatControlCAsInput property instead of this event. このプロパティを設定してfalseユーザーが Ctrl キーを押しながら C キーを押した場合に常にアプリケーションを終了することを確認できます。By setting this property to false, you can ensure that your application always exits if the user presses Ctrl+C. 設定することでtrue、こと、Ctrl + C キーを押してもアプリケーションは終了しないことを確認できます。By setting it to true, you can ensure that pressing Ctrl+C will not terminate the application.

このイベントのイベント ハンドラーは、スレッド プールのスレッドで実行されます。The event handler for this event is executed on a thread pool thread.

セキュリティ

UIPermission
セーフ トップレベル ウィンドウとセーフ サブウィンドウの中に変更します。for modifying safe top-level windows and subwindows. 関連付けられた列挙体。 SafeTopLevelWindowsAssociated enumeration: SafeTopLevelWindows

適用対象

こちらもご覧ください