So vermeiden Sie mehrere untergeordnete Formulare, die in MDIParent C # Win Forms angezeigt werden

8

Ich möchte vermeiden, dass mein untergeordnetes Formular häufig angezeigt wird, wenn ein Benutzer versucht, das untergeordnete Formular zu öffnen, das in MDIParent bereits geöffnet ist. Eine Möglichkeit, dies zu vermeiden, ist die Deaktivierung des Controllers (in meinem Fall BUTTON), aber ich habe auch eine Tastenkombination ( Strg + L ) für diese Funktion angegeben. Wenn also der Benutzer Strg + L eingibt, wird das gleiche untergeordnete Formular geöffnet, und ich sehe zwei untergeordnete Formulare in MDI.

%Vor%

Ich möchte das vermeiden. Wie kann ich das machen?

Im Bild können Sie sehen, dass ein untergeordnetes Formular Name Online Leads zweimal geöffnet wird, wenn der Benutzer das erste Mal über Menü (LEADS) und das zweite Mal mit der Tastenkombination öffnet. Ich möchte nicht, dass das passiert. Wenn das Formular bereits geöffnet ist, sollte es vermieden werden, ein anderes Formular zu öffnen ... Wie geht das?

    
panindra 12.07.2011, 04:16
quelle

15 Antworten

4

Die Art und Weise, wie ich es normalerweise mache, wenn ich nur eine offene haben soll, ist etwas wie:

%Vor%     
shelleybutterfly 12.07.2011, 04:37
quelle
4

Legen Sie dies in Ihrem Formular main () function

fest %Vor%

und das ist der Code, der in dein Slip-Event-Menü-Strip geht

%Vor%     
raghu 10.11.2012 08:09
quelle
3
%Vor%     
Joe 12.07.2011 04:40
quelle
2

Ich persönlich bevorzuge eine generische Implementierung:

%Vor%

Dann kannst du es einfach so benutzen:

%Vor%

Dabei ist myForm der TYPE des Formulars, das Sie erstellen möchten

    
Dave Coates 05.08.2014 06:27
quelle
1
%Vor%     
Lakmali Vithanage 22.02.2014 08:58
quelle
1

Fistet Zeit, wenn Sie das Formular aus dem Menü öffnen, ist die Variable frmRep null

%Vor%

... also füge ich ein weiteres "if" in das erste "if" ein, um zu bestätigen, dass meine Form sichtbar ist, weil ich andere Formen habe. Wenn es nicht sichtbar ist, mache ich eine Instanz und zeige die Form, aber wenn sichtbar ist Ich benutze nur Activate ()

%Vor%     
Mario Arispuro 04.05.2016 18:28
quelle
0

Am einfachsten ist es, einen Verweis auf das untergeordnete Formular zu behalten und nur ein neues zu erstellen, wenn es nicht bereits existiert. Etwas wie das:

%Vor%

Sie brauchen auch Code, um formWeblead auf null zu setzen, wenn Sie es schließen, aber ich bin sicher, dass Sie diesen Teil herausfinden können:)

    
Mike Caron 12.07.2011 04:38
quelle
0
%Vor%

Es wäre schön gewesen, stattdessen Semaphore zu verwenden, um 1-n Instanzen zu ermöglichen.

    
gangelo 12.07.2011 13:03
quelle
0

Hier ist die "Methode", die ich für das Aufrufen von nur einem Formular erstellt habe, wenn Sie in MDIParent auf Menü klicken. Hoffe, diese "Methode" kann dir helfen!

Verwendung: On Even ToolStripMenuItems.

%Vor%     
KAKAworld2012 21.02.2012 02:16
quelle
0

Sie können aktuelle offene Formulare überprüfen, um das zu erreichen:

%Vor%     
Brinda 16.12.2012 09:13
quelle
0

Ich benutze diese Lösung mit einem kleinen Trick

%Vor%     
huncyrus 22.04.2013 09:24
quelle
0
%Vor%     
Mehmet Altunbaş 20.12.2015 13:30
quelle
0

Der Code, der dasselbe untergeordnete Formular in einem MDI-Formular verhindert

%Vor%     
Alan John Thomas 17.12.2015 10:36
quelle
0

Die einfachsten Möglichkeiten, mehrere Instanzen von Kindern zu verhindern:

%Vor%

Dann nenne es so:

%Vor%     
Ericson B. Sudara 09.08.2016 03:02
quelle
0

die einfachen Wege, mehrere Instanzen von Kindern zu verhindern

%Vor%     
Ericson B. Sudara 09.08.2016 02:53
quelle

Tags und Links