ConsoleCancelEventArgs.Cancel ConsoleCancelEventArgs.Cancel ConsoleCancelEventArgs.Cancel ConsoleCancelEventArgs.Cancel Property

定義

Control 修飾子キーと C コンソール キー (Ctrl + C) または Ctrl + Break キーを押した場合に現在のプロセスが終了するかどうかを示す値を取得または設定します。Gets or sets a value that indicates whether simultaneously pressing the Control modifier key and the C console key (Ctrl+C) or the Ctrl+Break keys terminates the current process. 現在のプロセスを終了する既定値は false です。The default is false, which terminates the current process.

public:
 property bool Cancel { bool get(); void set(bool value); };
public bool Cancel { get; set; }
member this.Cancel : bool with get, set
Public Property Cancel As Boolean

プロパティ値

イベント ハンドラーの終了時に現在のプロセスを再開する場合は、true。現在のプロセスを終了する場合は、falsetrue if the current process should resume when the event handler concludes; false if the current process should terminate. 既定値は false です。現在のプロセスは、イベント ハンドラーが返されると終了します。The default value is false; the current process terminates when the event handler returns. true の場合、現在のプロセスが継続されます。If true, the current process continues.

次の例は、プロパティを使用Cancelしてイベントを処理する方法を示しています。The following example demonstrates how to use the Cancel property to handle an event.

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

注釈

イベントのハンドラーが呼び出さCancel falseれると、プロパティは自動的にに初期化されます。 CancelKeyPressThe Cancel property is automatically initialized to false when the handler for the CancelKeyPress event is invoked. イベントハンドラーが終了Cancelしたときのプロパティの値は、現在のプロセスが再開または終了するかどうかを判断します。The value of the Cancel property when the event handler finishes determines whether the current process resumes or terminates.

Ctrl + C キーを押した後の設定操作でtrue 、イベントハンドラーが終了したときに現在のプロセスを再開するfalseか、現在のプロセスを終了することを示すには、を指定します。In a set operation after Ctrl+C is pressed, specify true to indicate that the current process should resume when the event handler concludes, or false to indicate that the current process should terminate.

注意 (呼び出し元)

Cancel true InvalidOperationExceptionとでは、プロパティをに設定しようとしCancelKeyPressています。これは、ユーザーが Ctrl + Break キーを押したときに、例外がスローされた場合に発生します。 .NET Framework 4.NET Framework 4 .NET Framework 3.5.NET Framework 3.5In the .NET Framework 3.5.NET Framework 3.5 and .NET Framework 4.NET Framework 4, attempting to set the Cancel property to true if the CancelKeyPress event was invoked by the user pressing Ctrl+Break threw an InvalidOperationException exception. では、ユーザーが Ctrl + Cancel Break キー trueを押してアプリケーションの終了をキャンセルした後に、プロパティをに設定できます。 .NET Framework 4.5.NET Framework 4.5In the .NET Framework 4.5.NET Framework 4.5, you can set the Cancel property to true after the user presses Ctrl+Break and cancel the termination of the application.

適用対象

こちらもご覧ください