Heim Backend-Entwicklung C#.Net-Tutorial CloseReason-Aufzählung von Args-Parametern in FormClosing- und FormClosed-Ereignissen in der C#-Sprache

CloseReason-Aufzählung von Args-Parametern in FormClosing- und FormClosed-Ereignissen in der C#-Sprache

Nov 22, 2016 pm 04:17 PM
c#

Mein Betriebssystem ist Win7 Ultimate, die VS-Version ist VS2012 und die .NET-Version ist .NET Framework 4.5.

Im FormClosing-Ereignis des Formulars gibt es eine Aufzählungsvariable CloseReason unter dem zweiten Parameter (Typ FormClosingEventArgs) und im FormClosed-Ereignis des Formulars gibt es auch eine Aufzählungsvariable unter dem zweiten Parameter (FormClosedEventArgs). Typ) CloseReason . Die CloseReason-Enumeration befindet sich unter dem Namespace System.Windows.Forms.

Wie im folgenden Codeausschnitt gezeigt, befindet sich CloseReason in der FormClosingEventArgs-Typvariable e des FormClosing-Ereignisses des Formulars.

private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
{
    switch (e.CloseReason)
    {
        case CloseReason.None: { MessageBox.Show("Closing: CloseReason.None"); } break;
        case CloseReason.WindowsShutDown: { MessageBox.Show("Closing: CloseReason.WindowsShutDown"); } break;
        case CloseReason.MdiFormClosing: { MessageBox.Show("Closing: CloseReason.MdiFormClosing"); } break;
        case CloseReason.UserClosing: { MessageBox.Show("Closing: CloseReason.UserClosing"); } break;
        case CloseReason.TaskManagerClosing: { MessageBox.Show("Closing: CloseReason.TaskManagerClosing"); } break;
        case CloseReason.FormOwnerClosing: { MessageBox.Show("Closing: CloseReason.FormOwnerClosing"); } break;
        case CloseReason.ApplicationExitCall: { MessageBox.Show("Closing: CloseReason.ApplicationExitCall"); } break;
    }
}
Nach dem Login kopieren

Aus Sicht der Metadaten hat diese Aufzählung insgesamt die folgenden 7 Aufzählungswerte:

#region 程序集 System.Windows.Forms.dll, v4.0.0.0
// C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Windows.Forms.dll
#endregion

using System;

namespace System.Windows.Forms
{
    // 摘要:
    //     指定窗体关闭的原因。
    public enum CloseReason
    {
        // 摘要:
        //     关闭原因未定义或者无法确定。
        None = 0,
        //
        // 摘要:
        //     操作系统正在关闭所有应用程序以便准备关机。
        WindowsShutDown = 1,
        //
        // 摘要:
        //     此多文档界面 (MDI) 窗体的父窗体正在关闭。
        MdiFormClosing = 2,
        //
        // 摘要:
        //     用户正在通过用户界面 (UI) 关闭该窗体,例如通过单击窗体窗口上的“关闭”按钮,通过选择窗口控制菜单上的“关闭”按钮,或者通过按 Alt+F4
        //     等方式关闭。
        UserClosing = 3,
        //
        // 摘要:
        //     Microsoft Windows 任务管理器正在关闭应用程序。
        TaskManagerClosing = 4,
        //
        // 摘要:
        //     所有者窗体正在关闭。
        FormOwnerClosing = 5,
        //
        // 摘要:
        //     System.Windows.Forms.Application 类的 System.Windows.Forms.Application.Exit()
        //     方法被调用。
        ApplicationExitCall = 6,
    }
}
Nach dem Login kopieren

Der MSDN dieser Aufzählung kann auf die Seite verweisen:

https://msdn.microsoft.com/en-us/library/system.windows.forms.closereason(v=vs.110).aspx

Mit Ausnahme des Typs „Keine“ dieser Artikel hat alle sechs Aufzählungswerte. Der Test wurde durchgeführt und die Ergebnisse des Tests werden hier aufgezeichnet.

1. CloseReason.WindowsShutDown

Dieser CloseReason wird ausgelöst, wenn Windows abgemeldet oder geschlossen wird. Fügen Sie hier jedoch keine Elemente wie MessageBox hinzu, da Windows feststellt, dass das aktuelle Programm nicht mehr verfügbar ist Wenn das Programm geschlossen wird, wird das Schließen dieses Programms erzwungen.

2. CloseReason.MdiFormClosing

Wenn das aktuelle Formular ein MDI-Unterformular ist und das MDI-Containerformular geschlossen ist, wird dieser CloseReason angefordert, wenn die aktuellen Ereignisse FormClosing und FormClosed ausgelöst werden.

So öffnen Sie ein anderes Formular als MdiParent mit dem aktuellen Formular:

FormChild formChild = new FormChild();
formChild.MdiParent = this;
formChild.Show();
Nach dem Login kopieren

(Sie müssen den IsMdiContainer dieses Formulars auf True setzen)

3 .UserClosing

Der Benutzer schließt das aktuelle Programm manuell, indem er beispielsweise die Funktion Close() aufruft oder auf das „ד in der oberen rechten Ecke des Programms klickt. Der Grund für das Schließen ist CloseReason.UserClosing.

4. CloseReason.TaskManagerClosing

Dieses Ereignis wird ausgelöst, wenn das Fenster vom Task-Manager geschlossen wird. Beim Testen habe ich jedoch festgestellt, dass es für den Task-Manager obligatorisch ist, das Fenster zu schließen . Nach dem Festlegen des Haltepunkts können Sie feststellen, dass das Programm kurz nach Auslösen des FormClosing-Ereignisses vom Task-Manager zwangsweise geschlossen wird. Diese Zeit ist sehr kurz, daher ist es nicht geeignet, hier Dinge wie das Öffnen der MessageBox zu tun (weil es ist nutzlos).

5. CloseReason.FormOwnerClosing

ist ähnlich wie CloseReason.MdiFormClosing, wenn Formular A geschlossen wird, löst Formular B die Ereignisse FormClosing und FormClosed aus. ThisCloseReason.

Bezüglich der Ausgabe des Formulars als Eigentümer können Sie sich auf die MSDN-Seite beziehen:

https://msdn.microsoft.com/en-us/library/system.windows.window .owner(v =vs.110).aspx

So verwenden Sie das aktuelle Formular als Eigentümer, um ein anderes Formular zu öffnen:

FormChild formChild2 = new FormChild();
formChild2.Owner = this;
formChild2.Show();
Nach dem Login kopieren

6. CloseReason.ApplicationExitCall

Anwendung aufrufen. Wenn die Exit()-Methode das Programm beendet, ist CloseReason dieser Wert.

Lassen Sie uns abschließend über die Aufrufsequenz der Ereignisse FormClosing und FormClosed sprechen:

1 Das Ereignis FormClosing wird ausgelöst, bevor das Formular geschlossen wird, und das Ereignis FormClosed wird ausgelöst, nachdem das Formular geschlossen wird .

2. Wenn Formular A ein MDI-Container ist und das übergeordnete MDI von Formular B Formular A ist, lautet die aufrufende Ereignissequenz:

Form B – FormClosing-Ereignis – CloseReason. MdiFormClosing

Fenster Form A – FormClosing-Ereignis – CloseReason.UserClosing

Form B – FormClosed-Ereignis – CloseReason.MdiFormClosing

Form A – FormClosed-Ereignis – CloseReason.UserClosing

3. Wenn Formular A der Eigentümer von Formular B ist, lautet die Reihenfolge der aufrufenden Ereignisse:

Form B – FormClosing-Ereignis – CloseReason.FormOwnerClosing

Form A – FormClosing-Ereignis – CloseReason.UserClosing

Form B – FormClosed-Ereignis – CloseReason.FormOwnerClosing

Form A – FormClosed-Ereignis – CloseReason.UserClosing


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Active Directory mit C# Active Directory mit C# Sep 03, 2024 pm 03:33 PM

Leitfaden zu Active Directory mit C#. Hier besprechen wir die Einführung und die Funktionsweise von Active Directory in C# sowie die Syntax und das Beispiel.

Zufallszahlengenerator in C# Zufallszahlengenerator in C# Sep 03, 2024 pm 03:34 PM

Leitfaden zum Zufallszahlengenerator in C#. Hier besprechen wir die Funktionsweise des Zufallszahlengenerators, das Konzept von Pseudozufallszahlen und sicheren Zahlen.

Zugriffsmodifikatoren in C# Zugriffsmodifikatoren in C# Sep 03, 2024 pm 03:24 PM

Leitfaden zu den Zugriffsmodifikatoren in C#. Wir haben die Einführungstypen von Zugriffsmodifikatoren in C# zusammen mit Beispielen und Ausgaben besprochen.

C#-Datenrasteransicht C#-Datenrasteransicht Sep 03, 2024 pm 03:32 PM

Leitfaden zur C#-Datenrasteransicht. Hier diskutieren wir die Beispiele, wie eine Datenrasteransicht aus der SQL-Datenbank oder einer Excel-Datei geladen und exportiert werden kann.

C#-Serialisierung C#-Serialisierung Sep 03, 2024 pm 03:30 PM

Leitfaden zur C#-Serialisierung. Hier besprechen wir die Einführung, die Schritte des C#-Serialisierungsobjekts, die Funktionsweise bzw. das Beispiel.

Muster in C# Muster in C# Sep 03, 2024 pm 03:33 PM

Leitfaden zu Mustern in C#. Hier besprechen wir die Einführung und die drei wichtigsten Arten von Mustern in C# zusammen mit ihren Beispielen und der Code-Implementierung.

Primzahlen in C# Primzahlen in C# Sep 03, 2024 pm 03:35 PM

Leitfaden zu Primzahlen in C#. Hier besprechen wir die Einführung und Beispiele von Primzahlen in C# sowie die Codeimplementierung.

Fakultät in C# Fakultät in C# Sep 03, 2024 pm 03:34 PM

Leitfaden zur Fakultät in C#. Hier diskutieren wir die Einführung in die Fakultät in C# zusammen mit verschiedenen Beispielen und Code-Implementierungen.

See all articles