Console.CancelKeyPress Událost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
public:
static event ConsoleCancelEventHandler ^ CancelKeyPress;
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static event ConsoleCancelEventHandler? CancelKeyPress;
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
[System.Runtime.Versioning.UnsupportedOSPlatform("android")]
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public static event ConsoleCancelEventHandler? CancelKeyPress;
public static event ConsoleCancelEventHandler CancelKeyPress;
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
member this.CancelKeyPress : ConsoleCancelEventHandler
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("android")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
member this.CancelKeyPress : ConsoleCancelEventHandler
member this.CancelKeyPress : ConsoleCancelEventHandler
Public Shared Custom Event CancelKeyPress As ConsoleCancelEventHandler
Event Type
- Atributy
Příklady
Následující příklad ukazuje, jak se CancelKeyPress událost používá. Když stisknete Ctrl+C, operace čtení se přeruší a myHandler
vyvolá se obslužná rutina události. Při zadání do obslužné rutiny ConsoleCancelEventArgs.Cancel události je false
vlastnost , což znamená, že aktuální proces se ukončí při ukončení obslužné rutiny události. Obslužná rutina události však nastaví ConsoleCancelEventArgs.Cancel vlastnost na true
, což znamená, že proces se neukončí a operace čtení bude pokračovat.
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: {cki.Key}\n");
// 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: {args.SpecialKey}");
Console.WriteLine($" Cancel property: {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: {args.Cancel}");
Console.WriteLine("The read operation will resume...\n");
}
}
// 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
open System
let myHandler sender (args: ConsoleCancelEventArgs) =
printfn "\nThe read operation has been interrupted."
printfn $" Key pressed: {args.SpecialKey}"
printfn $" Cancel property: {args.Cancel}"
// Set the Cancel property to true to prevent the process from terminating.
printfn "Setting the Cancel property to true..."
args.Cancel <- true
// Announce the new value of the Cancel property.
printfn $" Cancel property: {args.Cancel}"
printfn "The read operation will resume...\n"
// Establish an event handler to process key press events.
Console.CancelKeyPress.AddHandler(ConsoleCancelEventHandler myHandler)
let mutable quit = false
while not quit do
printf "Press any key, or 'X' to quit, or "
printfn "CTRL+C to interrupt the read operation:"
// Start a console read operation. Do not display the input.
let cki = Console.ReadKey true
// Announce the name of the key that was pressed .
printfn $" Key pressed: {cki.Key}\n"
// Exit if the user pressed the 'X' key.
if cki.Key = ConsoleKey.X then
quit <- true
// 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
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: {cki.Key}{vbCrLf}")
' 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: {args.SpecialKey}")
Console.WriteLine($" Cancel property: {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: {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
Poznámky
Tato událost se používá ve spojení s System.ConsoleCancelEventHandler a System.ConsoleCancelEventArgs. Událost CancelKeyPress umožňuje konzolové aplikaci zachytit signál Ctrl+C, aby se obslužná rutina události mohla rozhodnout, zda má pokračovat v provádění nebo ukončení. Další informace o zpracování událostí najdete v tématu Zpracování a vyvolávání událostí.
Když uživatel stiskne kombinaci kláves Ctrl+C nebo Ctrl+Break, CancelKeyPress aktivuje se událost a obslužná rutina ConsoleCancelEventHandler události aplikace se spustí. Obslužné rutině události se předá ConsoleCancelEventArgs objekt, který má dvě užitečné vlastnosti:
SpecialKeyumožňuje určit, jestli byla obslužná rutina vyvolána jako výsledek, když uživatel stiskl ctrl+C (hodnota vlastnosti je ConsoleSpecialKey.ControlC) nebo Ctrl+Break (hodnota vlastnosti je ConsoleSpecialKey.ControlBreak).
Cancel, což vám umožní určit, jak má vaše aplikace reagovat na stisknutí kláves Ctrl+C nebo Ctrl+Break. Ve výchozím nastavení je
false
vlastnost , což způsobí ukončení Cancel provádění programu při ukončení obslužné rutiny události. Změna vlastnosti natrue
určuje, že aplikace by měla pokračovat v provádění.
Tip
Pokud má vaše aplikace jednoduché požadavky, můžete místo této události použít TreatControlCAsInput vlastnost . Nastavením této vlastnosti na false
, můžete zajistit, aby se aplikace vždy ukončila, když uživatel stiskne kombinaci kláves Ctrl+C. Pokud ho nastavíte na true
, můžete zajistit, že stisknutím kláves Ctrl+C aplikaci neukončíte.
Obslužná rutina události pro tuto událost je spuštěna ve vlákně fondu vláken.