Chcel by som vedieť vhodný spôsob úplného ukončenia aplikácie Formuláre. Formulár otváram štandardným spôsobom pomocou kódu:
namespace History
{
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new DisplayHistory());
}
}
}
...a tu je barebonová verzia funkcie DisplayHistory s rôznymi vecami, ktoré som sa pokúsil ukončiť komentovaním aplikácie. Prvé dva spôsobia nespracovanú výnimku, v ktorej sa uvádza, že nemôžem získať prístup k umiestnenému objektu. Tretí nemá vôbec žiadny vplyv, a štvrtý nebude vôbec kompilovaný, pretože sa mi zobrazí chyba, že „Aplikácia neobsahuje definíciu pre Current“:
public DisplayHistory()
{
InitializeComponent();
// this.Close();
// Close();
// Application.Exit();
// Application.Current.Shutdown();
}
odpovede:
2 pre odpoveď č. 1Namiesto pokusu o jeho zatvorenie v konštruktore je lepšie formulár neotvárať.
Ale ak naozaj chcete zavrieť formulár v konštruktore na základe nejakej podmienky, môžete sa prihlásiť na odber Load
udalosť predtým InitializeComponent
v kóde a formulár zavrite pomocou this.Close()
:
public Form1()
{
if (some criteria)
{
this.Load += (sender, e) => { this.Close(); };
}
return;
InitializeComponent();
}
Ak chcete aplikáciu normálne zavrieť, môžete zavolať nižšie uvedené kódy kdekoľvek okrem konštruktora formulára:
this.Close();
Application.Exit();
Ak chcete vynútiť zastavenie aplikácie alebo jej neobvyklé zatvorenie, môžete zavolať Environment.Exit
kdekoľvek vrátane konštruktora formulára:
Environment.Exit(1);