ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
2511
2511
EMPFEHLEN
-
Hallo Leute.
Habe einen modalen Dialog und wenn ich in einem Feld keine Eingabe mache, so zeige ich einen weiteren modalen Dialog an, dass in dem einen Feld eine Eingabe gemacht werden muss. Mein Problem allerdings ist, dass mein zweiter modaler Dialog hinter dem ersten Dialog angezeigt wird. Wie bringe ich den zuletzt geöffneten Dialog in den Vordergrund?
Danke im Vorraus
LG @ll
-
25.03.08 11:49 #2
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
Hallo,
von welchem Formular aus öffnest du denn den zweiten Dialog, evtl. ist ja der Bezug der Modalität zum darunter liegenden Formular nicht ganz richtig eingestellt. Der zweite Dialog müsste (wenn mich nicht alles täuscht), vom ersten Dialog aus modal aufgerufen werden. Zeig am besten mal deinen Code.
Und überprüf am besten nochmal für den ersten Dialog, ob da die Eigenschaft "AlwaysOnTop" deaktiviert ist - falls es die überhaupt noch gibt, habe lange nichts mehr mit SWF gemacht.
Grüße, D."You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse
-
25.03.08 11:57 #3
- Registriert seit
- Mar 2007
- Beiträge
- 125
Hi,
myDialog.BringToFront();
Der Befehl müßte das Fenster auf die oberste Ebene schieben.
Aber richtig ist das normalerweise er über dem ersten erscheinen müßte.
mfg
Martin
-
Mein erster Dialog ist ein Formular, welches folgendermaßen aufgerufen wird:
Code :1 2 3 4 5 6
DokumentWizzard wizz = new DokumentWizzard(); wizz.availableDocuments = availableDocuments; if (wizz.ShowDialog() == DialogResult.OK) //also modal { //etc.... }
in diesem Dialog gibt es ein Feld, in dem eine Nummer eingetragen werden muss. Wenn man auf den Button Ok klickt und das Feld ist leer, so mache ich folgendes:
Code :1 2 3 4
private MessageBoxDlg MessageDlg = new MessageBoxDlg(); MessageDlg.BringToFront(); MessageDlg.Show("Bitte geben Sie eine Nummer ein!");
Mein MessageDlg ist auch von Form abgeleitet und meine Show Methode sieht folgendermaßen aus:
Code :1 2 3 4 5 6 7 8
public void Show(string message) { //Um einen Hinweis anzuzeigen (z.B. ein Feld wurde nicht ausgefüllt) lblMessage.Text = message; this.Text = ""; ShowDialog(); //Dialog wird als modaler Dialog aufgerufen, erscheint allerdings im Hintergrund von DokumentWizzard! }
Hoffe, dass mir jemand sagen kann, warum mein Dialog im Hintergrund aufgerufen wird?! Eine Eigenschaft wie AlwaysOnTop gibt es nicht. Mit .BringToFront() bleibt mein Dialog trotzdem hinter dem DokumentWizzard-Dialog!
Ich programmiere im VS 2005.
LG @ll
-
25.03.08 13:22 #5
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
Hi,
was ist denn MessageBoxDlg für eine Klasse? Die stammt nicht aus dem normalen Umfang des .net-Frameworks, oder?
Ich würde mal annehmen, dass diese MessageBoxDlg-Klasse durch den Aufruf von Show() "weniger modal" angezeigt wird als der andere Dialog, also eine niedrigere Priorität hat. Sprich: Der erste Dialog bleibt modal, der zweite wird nur als "normales" Fenster angezeigt.
Du könntest versuchen, den zweiten Dialog auch als eigenes Formular zu gestalten und dann über die ShowDialog()-Funktion aufzurufen. Oder du machst den ersten Dialog unsichtbar, während du den zweiten anzeigst.
Hoffe, das hilft dir.
Grüße, D."You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse
-
Mein MessageBoxDlg ist von Form abgeleitet - also ein Formular. In der Methode
rufe ich ja this.ShowDialog() auf, also müsste mein MessageBoxDlg modal angezeigt werden?!Code :1
Show(string message)
Mein Ziel ist es, eine MessageBox mehr oder weniger nachzubauen, also ich habe eine zweite Methode Show, in welcher ich eine Message, einen Titel, das Icon und die Buttons mitübergebe:
Code :1
public DialogResult Show(string message, string title, eButtons buttons, eIcon icon)
in dieser Funktion rufe ich genauso .ShowDialog() auf und es funktioniert.
Wahrscheinlich liegt es allerdings daran, dass ich meine Show-Methode mit den 4 Parametern nur aus der Hauptapplikation aufrufe und nicht von einem bereits angezeigten modalen Dialog?! Kann es einfach sein, dass ich von einem modalen Dialog aus keinen weiteren modalen Dialog aufrufen kann? Eigentlich nicht, oder?
Ich denke mir, dass es doch machbar sein muss aus einem modalen Dialog einen weiteren anzuzeigen?!
-
25.03.08 14:09 #7
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
Hallo,
also von einem modalen Dialog aus kann zumindest eine normale MessageBox aufrufen, die dann darüber auch wieder modal angezeigt wird. Kann durchaus sein, dass ich damit jetzt falsch liege, aber... soweit ich mich erinnere, wird ein modales Fenster immer modal zu einem anderen angezeigt, die Modalität ist also relativ zu einem anderen Fenster. Soll heißen: Der Dialog ist immer modal zu dem Fenster, von dem aus er aufgerufen wurde. Versuch einfach mal, den zweiten Dialog aus dem ersten heraus anzuzeigen.
Code :1 2 3 4 5 6 7 8 9
// im ersten Dialog, beim Klicken auf den OK-Button: private void OnButtonOkClick(...) { if(TextBox1.Text == "") { MessageBoxDlg dlg = new MessageBoxDlg(); dlg.ShowModal(); } }
Grüße, D."You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse
-
Hab die Lösung gefunden:
muss einfach den Owner angeben:
Code :1
MessageDlg.ShowDialog([B]this[/B]);
d.h. wenn ich meine Show-Methode aufrufe, übergebe ich einfach noch zusätzlich den owner und der Dialog wird richtig angezeigt!
Eigentlich eh logisch!
Danke für eure Hilfe. Der letzte Post hat mich darauf gebracht.
Ähnliche Themen
-
Nicht-modalen Dialog mittels OnLButtonDblClk() auslösen
Von Cappaja im Forum VisualStudio & MFCAntworten: 2Letzter Beitrag: 17.07.09, 16:29 -
Zugriff auf modalen Dialog
Von jb007 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 14.05.07, 21:26 -
Schriftart im Modalen Dialog ändern?
Von Apollo75 im Forum VisualStudio & MFCAntworten: 6Letzter Beitrag: 05.06.06, 10:35 -
Nachricht von einem Dialog zu modalen, geöffneten 2. Dialog schicken
Von gehrti im Forum VisualStudio & MFCAntworten: 5Letzter Beitrag: 24.05.05, 12:49 -
Statusleiste für modalen Dialog als Hauptfenster
Von sdi im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 02.11.04, 13:40





Zitieren
Login





