Hi,
Ich muss ein wenig ausholen ...
Ich habe die MessageBox Klasse durch eine Klasse ClMsgBoxDark ersetzt. Die verhält sich ähnlich wie die originale Klasse ... aber sie hat insbesondere einen dunklen Hintergrund. Das Fenster soll immer in der Mitte der (rufenden) Parent Form aufspringen. Deshalb verwende ich FormStartPosition.CenterParent.
Der Aufruf sieht dann wie folgt aus MsgBoxDark.Show( ....) .... Parameter wie bei der MessageBox
Soweit so gut ...
Allerding klappt das nicht, wenn ich MsgBoxDark aus der LoadProzedur einer Form aus aufrufe. Da ist die Form noch nicht vollständig initialisiert und damit führt FormStartPosition.CenterParent zur StartLocation = (0,0) also die linke obere Ecke.
In diesem Fall würde ich gern MsgBoxDark mit FormStartPosition.CenterScreen öffnen.
Nur wie kann ich das unterscheiden ? So habe ich das versucht:
Das klappt aber nicht.
Egal wo der Aufruf erfolgt ist (ob aus einer "normalen" Prozdure" oder einer "Load Prozedur), ich erhalte:
Die Anweisung
Die Properties f.Location und f.Parent sind also nicht für die Fallunterscheidung geeignet.
Wie kann ich also abfragen, ob MsgBoxDark.Show aus einer Load Prozedur aufgerufen wurde oder nicht. Oder anders ausgedrückt: wie kann ich im VORHINEIN herausfinden, ob die Message Form an der Location (0,0) aufspringen wird.
Am Call selbst will ich nichts ändern, weil ich diese Klasse in vielen Programmen bereits verwende.
Uff ... ich hoffe, ich habe mein Problem verständlich machen können ...
LG
Peter
Ich muss ein wenig ausholen ...
Ich habe die MessageBox Klasse durch eine Klasse ClMsgBoxDark ersetzt. Die verhält sich ähnlich wie die originale Klasse ... aber sie hat insbesondere einen dunklen Hintergrund. Das Fenster soll immer in der Mitte der (rufenden) Parent Form aufspringen. Deshalb verwende ich FormStartPosition.CenterParent.
Der Aufruf sieht dann wie folgt aus MsgBoxDark.Show( ....) .... Parameter wie bei der MessageBox
Soweit so gut ...
Allerding klappt das nicht, wenn ich MsgBoxDark aus der LoadProzedur einer Form aus aufrufe. Da ist die Form noch nicht vollständig initialisiert und damit führt FormStartPosition.CenterParent zur StartLocation = (0,0) also die linke obere Ecke.
In diesem Fall würde ich gern MsgBoxDark mit FormStartPosition.CenterScreen öffnen.
Nur wie kann ich das unterscheiden ? So habe ich das versucht:
VB.NET-Quellcode
- 'Display dark messagebox
- Debug.Print("f.Location=" & f.Location.ToString)
- Debug.Print("f.Parent=" & If(f.Parent Is Nothing, "N/A", f.Parent.ToString))
- If f.Location = New Drawing.Point(0, 0) Then
- f.StartPosition = FormStartPosition.CenterScreen
- End If
- f.ShowDialog()
- f.Dispose()
- Return f.DialogResult
Das klappt aber nicht.
Egal wo der Aufruf erfolgt ist (ob aus einer "normalen" Prozdure" oder einer "Load Prozedur), ich erhalte:
Die Anweisung
FormStartPosition.CenterScreen
wird korrekt umgesetzt. Nur springt jetzt meine Message Box IMMER in der Bildschirmmitte auf. Die Properties f.Location und f.Parent sind also nicht für die Fallunterscheidung geeignet.
Wie kann ich also abfragen, ob MsgBoxDark.Show aus einer Load Prozedur aufgerufen wurde oder nicht. Oder anders ausgedrückt: wie kann ich im VORHINEIN herausfinden, ob die Message Form an der Location (0,0) aufspringen wird.
Am Call selbst will ich nichts ändern, weil ich diese Klasse in vielen Programmen bereits verwende.
Uff ... ich hoffe, ich habe mein Problem verständlich machen können ...
LG
Peter
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Peter329“ ()