Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Console.CancelKeyPress événement

 

Date de publication : novembre 2016

Se produit quand la touche de modification (Ctrl) Control et la touche de console (C) ConsoleKey.C ou la touche d'arrêt sont utilisées simultanément (Ctrl+C ou Ctrl+Pause).

Espace de noms:   System
Assembly:  mscorlib (dans mscorlib.dll)

public static event ConsoleCancelEventHandler CancelKeyPress

This event is used in conjunction with T:System.ConsoleCancelEventHandler and T:System.ConsoleCancelEventArgs. The E:System.Console.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.

When the user presses either Ctrl+C or Ctrl+Break, the E:System.Console.CancelKeyPress event is fired and the application's T:System.ConsoleCancelEventHandler event handler is executed. The event handler is passed a T:System.ConsoleCancelEventArgs object that has two useful properties:

  • 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, which allows you to determine how to your application should respond to the user pressing Ctrl+C or Ctrl+Break. By default, the Cancel property is false, which causes program execution to terminate when the event handler exits. Changing its property to true specifies that the application should continue to execute.

System_CAPS_tipAstuce

If your application has simple requirements, you can use the P:System.Console.TreatControlCAsInput property instead of this event. By setting this property to false, you can ensure that your application always exits if the user presses 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.

The following example demonstrates how the E:System.Console.CancelKeyPress event is used. When you press Ctrl+C, the read operation is interrupted and the myHandler event handler is invoked. Upon entry to the event handler, the P:System.ConsoleCancelEventArgs.Cancel property is false, which means that the current process will terminate when the event handler terminates. However, the event handler sets the P:System.ConsoleCancelEventArgs.Cancel property to true, which means that the process will not terminate and the read operation will resume.

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

UIPermission

for modifying safe top-level windows and subwindows. Associated enumeration: F:System.Security.Permissions.UIPermissionWindow.SafeTopLevelWindows

.NET Framework
Disponible depuis 2.0
Retour au début
Afficher: