Wie Sie vermeiden, mehrere Instanzen von windows forms in c#
Wie Sie vermeiden, mehrere Instanzen von windows forms in c# ?? ich will nur eine Instanz des Formulars ausgeführt. Da gibt es Chancen der öffnung die gleiche form, von vielen Seiten meiner Anwendung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Umsetzung der Singleton-Muster
Beispiel: CodeProject: Einfache Singleton-Formen (ok, es ist in VB.NET, aber nur, um Ihnen einen Anhaltspunkt)
Ja, es hat singleton-Muster,
Code zum erstellen einer singleton-Objekt,
Aufrufen/Show this form,
Wenn Sie die Anzeige der Dialogfeld verwenden Sie einfach
.ShowDialog();
statt.Show();
Einer Lösung, die ich angewendet mein Projekt, um das Formular wieder in den Vordergrund:
windowName ist im wesentlichen der name der Klasse von Ihrem Windows-Form und
return-Wert kann verwendet werden, für die nicht die Schaffung einer neuen form-Instanz.
Wenn Ihr system die Möglichkeit hat, zeigen die gleiche Art von form für verschiedene Instanz-Daten Sie könnten dann erstellen Sie ein Prüfsystem, das durchläuft alle vorhandenen Formulare öffnen, auf der Suche nach eine einzigartige Instanz der Daten-Bezeichner und dann re-angezeigt werden alle gefundenen form.
z.B. mit einer form-Klasse 'CustomerDetails' enthält eine öffentliche Eigenschaft 'CustomerUniqueID':
Außerdem verwenden wir den gleichen Mechanismus, der automatisch die Kraft erfrischt der Daten verbindlich, wenn ein Kunde die Daten bearbeitet und gespeichert werden.
Hier ist meine Lösung in ShowForm() :
überprüfen Sie diese link :
Versuchen, diesen code
Beim erstellen des Objekts für die obige Klasse 'MeineKlasse' prüfen Sie, ob der Zählwert größer als 1
Hier ist ein einfacher Weg, es zu tun.
Prüfen, ob die form ist null oder entsorgt wurde. Wenn das wahr ist, wir erstellen eine neue Instanz der form.
Sonst zeigen wir nur die bereits ausgeführten form.
Singletons sind nicht Objekt-orientiert. Sie sind einfach die Objekt-version der globalen Variablen. Was Sie tun können ist, stellen Sie den Konstruktor der Form-Klasse privat ist, so kann niemand versehentlich erstellen eine dieser. Dann rufen Sie in der Reflexion, konvertieren Sie das Tor zur öffentlichkeit und stellen Sie sicher, Sie erstellen eine und nur eine Instanz davon.
Können Sie überprüfen der bestehenden Prozesse vor dem öffnen der form:
Ich weiß nicht, ob die GetProcessesByName-Methode ist von der Benutzerkontensteuerung betroffen oder andere Sicherheitsmaßnahmen.