Ich habe versucht, dies zu tun, indem ich Sichtbar auf falsch oder versteckt im Konstruktor und im OnLoad-Ereignis festgelegt.
Keine dieser Optionen hatte Auswirkungen, da das Formular nach dem Erstellen des Formulars und nach dem Ereignis OnLoad in SetVisibleCore auf Sichtbar gesetzt ist.
Das Festlegen der Maske im ausgeblendeten Ereignis funktioniert, aber das Formular flackert für einen Moment auf dem Bildschirm.
Sie können SetVisibleCore auch überschreiben und den Wert auf false setzen, aber OnLoad wird nicht ausgelöst, und einige der anderen Ereignisse sind fehlerhaft, z. B. das Schließen von Formularen.
Die beste Lösung meiner Meinung nach ist das Formular zu minimieren und nicht in der Taskleiste vor dem Aufruf von Application.Run() angezeigt.
Also statt:
Application.Run(new MainForm());
tun:
MainForm form = new MainForm();
form.WindowState = FormWindowState.Minimized;
form.ShowInTaskbar = false;
Application.Run(form);
Dann wird die Anwendung mit allen richtigen Ereignisse laufen (auch OnShown) abgefeuert und das Formular nicht angezeigt wird.
Wenn Sie das Formular danach normal ausblenden/anzeigen möchten, müssen Sie den WindowState und ShowInTaskbar wieder auf Normal und True setzen.
Im Shown-Ereignis können Sie ShownInTaskbar auf true zurücksetzen und das Formular dann ordnungsgemäß ausblenden.
this.Shown += new System.EventHandler(this.MainFormShown);
...
void MainFormShown(object sender, EventArgs e)
{
this.ShowInTaskbar = true;
this.Visible = false;
}
Einstellungen der Window auf Normal zurück, während die Form verborgen ist keine Wirkung, so dass Sie es tun müssen, nachdem Sie das Formular wieder zeigen, sonst wird das Symbol in der Taskleiste sein, aber das Formular wird minimiert.
this.Show();
this.WindowState = FormWindowState.Normal;
möglich Duplikat tun können [this.Visible ist nicht in Windows Forms arbeiten] (http: // Stackoverflow. com/questions/3742709/this-visible-ist-nicht-arbeiten-in-windows-forms) –