Wie vermeidet man mehrere Instanzen von Windows Form in c #

7

Wie vermeidet man mehrere Instanzen von Windows Form in c # ?? Ich möchte nur eine Instanz des Formulars ausführen. Weil es Chancen gibt, dasselbe Formular von vielen Seiten meiner Anwendung zu öffnen.

    
Anuya 10.09.2009, 06:04
quelle

11 Antworten

10

Implementieren Sie das Singleton-Muster

ein Beispiel: CodeProject: Einfache Singleton-Formulare (ok, es ist in VB.NET, aber einfach um dir einen Hinweis zu geben)

    
Natrium 10.09.2009, 06:07
quelle
8

Ja, es hat Singleton-Muster,

Code zum Erstellen eines Singleton-Objekts,

%Vor%

Rufen Sie dieses Formular auf und zeigen Sie es an,

%Vor%     
adatapost 10.09.2009 06:17
quelle
5

Wenn Sie den Dialog anzeigen, verwenden Sie einfach .ShowDialog(); anstelle von .Show();

    
Simple Man 12.03.2014 04:09
quelle
4

Eine Lösung, die ich auf mein Projekt angewendet habe, um dieses Formular wieder in den Vordergrund zu bringen, ist:

%Vor%

windowName ist im Wesentlichen der Klassenname Ihres Windows Forms und Rückgabewert kann verwendet werden, um keine neue Formularinstanz zu erstellen.

    
Vas Giatilis 28.12.2014 11:32
quelle
0

Wenn Ihr System die gleiche Art von Formular für verschiedene Instanzdaten anzeigen kann, können Sie ein Prüfsystem erstellen, das alle vorhandenen offenen Formulare iteriert, nach einem eindeutigen Instanzdatenidentifikator sucht und dann jedes gefundene Formular erneut anzeigt.

z.B. mit einer Formularklasse 'CustomerDetails', die eine öffentliche Eigenschaft 'CustomerUniqueID' enthält:

%Vor%

Wir verwenden den gleichen Mechanismus auch, um die Aktualisierung der Datenbindung automatisch zu erzwingen, wenn die Daten eines Kunden bearbeitet und gespeichert wurden.

    
Dr Herbie 10.09.2009 09:59
quelle
0

Hier ist meine Lösung in ShowForm ():

%Vor%     
user2329135 28.04.2013 13:41
quelle
0

Überprüfen Sie diesen Link :

%Vor%     
Iraj 03.02.2015 11:24
quelle
0

Probieren Sie diesen Code

aus %Vor%

Beim Erstellen des Objekts für die obige Klasse 'MyClass' überprüfen Sie den Zählwert größer als 1

%Vor%     
Muhamed Shafeeq 07.08.2012 10:20
quelle
0

Hier ist ein einfacher Weg, es zu tun.

Überprüfen Sie, ob das Formular null ist oder entsorgt wurde. Wenn das stimmt, erstellen wir eine neue Instanz des Formulars.

Ansonsten zeigen wir nur das bereits laufende Formular.

%Vor%     
Shayne T. Thiessen 06.03.2018 16:51
quelle
-1

Singletons sind nicht objektorientiert. Sie sind einfach die Objektversion von globalen Variablen. Was Sie tun können, ist, den Konstruktor der Form-Klasse als privat zu definieren, damit niemand versehentlich eine davon erstellen kann. Rufen Sie dann reflection auf, konvertieren Sie den ctor in public und stellen Sie sicher, dass Sie eine und nur eine Instanz davon erstellen.

    
Emre 10.09.2009 08:08
quelle
-2

Sie können die vorhandenen Prozesse vor dem Öffnen des Formulars überprüfen:

%Vor%

Ich weiß nicht, ob die GetProcessesByName-Methode von der UAC oder anderen Sicherheitsmaßnahmen betroffen ist.

    
David Andres 10.09.2009 06:09
quelle

Tags und Links