System.ConsoleCancelEventHandler 委托

方法描述

表示将要处理 System.Console 的 CancelKeyPress 事件的方法。

语法定义(C# System.ConsoleCancelEventHandler 委托 的用法)

public delegate void ConsoleCancelEventHandler(
	Object sender,
	ConsoleCancelEventArgs e
)

构造函数

构造函数名称 构造函数描述

成员/方法

方法名称 方法描述

提示和注释

当创建 ConsoleCancelEventHandler 委托时,将标识处理事件的方法。 若要使该事件与事件处理程序相关联,请将该委托的一个实例添加到事件中。 除非移除了该委托,否则每当发生该事件时就调用事件处理程序。 有关事件处理程序委托的更多信息,请参见 事件和委托。

System.ConsoleCancelEventHandler 委托例子

下面的代码示例演示如何使用 ConsoleCancelEventHandler 类处理事件。

// This example demonstrates:
// the Console.CancelKeyPress event,
// the ConsoleCancelEventHandler delegate, 
// the ConsoleCancelEventArgs.SpecialKey property, and 
// the ConsoleCancelEventArgs.Cancel property.

using System;

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

// Clear the screen.
    Console.Clear();

// Turn off the default system behavior when CTRL+C is pressed. When 
// Console.TreatControlCAsInput is false, CTRL+C is treated as an
// interrupt instead of as input.
    Console.TreatControlCAsInput = false;

// Establish an event handler to process key press events.
    Console.CancelKeyPress += new ConsoleCancelEventHandler(myHandler);
    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.
        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;
        }
    }

/*
   When you press CTRL+C, the read operation is interrupted and the 
   console cancel event handler, myHandler, is invoked. Upon entry 
   to the event handler, the Cancel property is false, which means 
   the current process will terminate when the event handler terminates. 
   However, the event handler sets the Cancel property to true, which 
   means the process will not terminate and the read operation will resume.
*/
    protected static void myHandler(object sender, ConsoleCancelEventArgs args)
    {
// Announce that the event handler has been invoked.
    Console.WriteLine("\nThe read operation has been interrupted.");

// Announce which key combination was pressed.
    Console.WriteLine("  Key pressed: {0}", args.SpecialKey);

// Announce the initial value of the Cancel property.
    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");
    }
}
/*
This code example produces results similar to the following text:

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

*/

继承层次结构

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

线程安全

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。

相关资源

System 命名空间
MSDN