Fokus-Problem mit MDIchilds

07/04/2009 - 12:47 von Torsten Runge | Report spam
Hallo zusammen,

ich habe ein "kleines" Problem mit den MDIchild-Fenstern in meiner
Anwendung. Wenn ich mehre MDIchilds geöffnet habe und ein Fenster anwàhle,
das im Hintergrund liegt, so bleibt dieses im Hintergrund liegen. Dadurch
sehe ich evtl. nicht, wenn in das Fenster versehentlich Eingaben gemacht
werden. Ich möchte, dass das Fenster sobald es angewàhlt wird (egal an
welcher Stelle ein Mausklick erfolgt) in den Vordergrund geholt wird. Wenn
ich den Focus im Click-Ereignis des MDIchilds setze, dann funktioniert
dieses allerdings nicht beim Klicken in die anderen Objekte:

Private Sub frmForm_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Click

Me.Focus()

End Sub

Muss ich wirklich für jedes der vorhandenen Objekte ein Clickereignis setzen
oder gibt es hier etwas was alles vereinfacht?

Gruß,
Torsten
 

Lesen sie die antworten

#1 Peter Götz
07/04/2009 - 15:21 | Warnen spam
Hallo Torsten,

ich habe ein "kleines" Problem mit den MDIchild-Fenstern
in meiner Anwendung. Wenn ich mehre MDIchilds geöffnet
habe und ein Fenster anwàhle,



Was bedeutet konkret "anwàhle"?
Mit der Maus darauf klicken?
Via Strg+Tab zum nàchsten MdiChild wechseln?
Oder was sonst?

das im Hintergrund liegt, so bleibt dieses im Hintergrund
liegen.



Wenn auf eine MDI-Child oder ein darauf befindliches
Steuerelement geklickt wird, kommt dieses MDI-Child
in den Vordergrund.

Wenn nicht, gibt es offenbar irgendwelchen Code in
Deinem Programm, der das verhindert.


Dadurch sehe ich evtl. nicht, wenn in das Fenster
versehentlich Eingaben gemacht werden. Ich möchte,
dass das Fenster sobald es angewàhlt wird (egal an
welcher Stelle ein Mausklick erfolgt) in den Vordergrund
geholt wird.



Wird Dein MDI-Child von einem anderen MDI-Child verdeckt?
Oder ist es vielleicht ein anderes, eigentàndiges Fenster?


Wenn ich den Focus im Click-Ereignis des MDIchilds setze,



Auf wen oder was setzt Du den Focus?

dann funktioniert dieses allerdings nicht beim
Klicken in die anderen Objekte:

Private Sub frmForm_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Click

Me.Focus()



Du setzt den Focus auf Me nur dann, wenn auf die frmForm
geklickt wird. Wenn Du auf ein auf der Form befindliches
Steuerelement klickst, wird ja kein frmForm_Click-Ereignis
ausgelöst.


End Sub

Muss ich wirklich für jedes der vorhandenen Objekte ein
Clickereignis setzen



Nein, musst Du nicht.

oder gibt es hier etwas was alles vereinfacht?



Im Normalfall kommen MDI-Childs in den Vordergrund,
wenn ein darauf befindliches Steuerelement den Focus
erhàlt.
Ich vermute, es gibt da noch ein Fenster, das kein Mdi-
Child ist und dessen TopMost-Eigenschaft auf True steht.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen