Archiv verlassen und diese Seite im Standarddesign anzeigen : VS .NET 2003 - MessageBox.Show() ausgabe
Durcairion
2005-11-29, 17:30:39
Ich stehe vor folgendem Problem, ich hab ein Programm und würd gern die Meldung zentriert über dem Hauptfenster ausgeben. Bisher erscheint die Meldung immer zentriert auf dem gesamten Bildschirm.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformsmessageboxclassshowtopic2.asp
Aus der Beschreibung werd ich nicht schlau.
MessageBox.Show(OWNER,"Text");
Aber wie muss ich den Owner angeben? ... das Raff ich einfach nicht
Sephiroth
2005-11-29, 17:54:18
vielleicht hilft dir ja das: http://ryanfarley.com/blog/archive/2004/03/23/465.aspx
Aber wie muss ich den Owner angeben? ... das Raff ich einfach nicht
OWNER sollte in Deinem Fall eine Referenz auf Dein Hauptfenster sein. Im Falle, daß der MessageBox-Aufruf aus dem Kontext des Hauptfensters heraus erfolgt, wäre das dann einfach
MessageBox.Show(this, "blubb")
Durcairion
2005-11-29, 19:45:57
OWNER sollte in Deinem Fall eine Referenz auf Dein Hauptfenster sein. Im Falle, daß der MessageBox-Aufruf aus dem Kontext des Hauptfensters heraus erfolgt, wäre das dann einfach
MessageBox.Show(this, "blubb")
Leider Funktioniert es mit dem this Zeiger nicht, das hatte ich auch schon probiert.
Du must natürlich das Objekt übergeben dass das Fenster repräsentiert über welchem die MessageBox angezeigt werden soll.
Du kannst nicht in irgend ner Klasse "this" benützen dafür X-D
this-Zeiger? Du benützt doch C# oder nicht? Da ist this kein Zeiger.
Leider Funktioniert es mit dem this Zeiger nicht, das hatte ich auch schon probiert.
Tschuldige, ich meinte natürlich MessageBox.Show(this.Handle, "bla")
grakaman
2005-11-29, 22:23:46
Du must natürlich das Objekt übergeben dass das Fenster repräsentiert über welchem die MessageBox angezeigt werden soll.
Du kannst nicht in irgend ner Klasse "this" benützen dafür X-D
this-Zeiger? Du benützt doch C# oder nicht? Da ist this kein Zeiger.
Wieso sollte das nicht gehen? Wichtig ist doch, woher der Aufruf kam, da der Owner IWin32Window implementieren muss. Das trifft schon mal auf alle GUI Elemente zu, da die eh von System.Windows.Forms.Control erben und System.Windows.Forms.Control zu gleich auch System.Windows.Forms.IWin32Window implementiert.
grakaman
2005-11-29, 22:27:00
Tschuldige, ich meinte natürlich MessageBox.Show(this.Handle, "bla")
Das kann gar nicht funktionieren, da dein Handle ein IntPtr Struct ist. Der Parameter muss aber eine Typ sein, der IWin32Window implementiert.
Wichtig ist doch, woher der Aufruf kam, da der Owner IWin32Window implementieren muss. Das trifft schon mal auf alle GUI Elemente zu, da die eh von System.Windows.Forms.Control erben und System.Windows.Forms.Control zu gleich auch System.Windows.Forms.IWin32Window implementiert.
D.h., daß ich mich beim erstenmal doch nicht vertan hab, oder? Wohlgemerkt, ich bezog mich da explizt auf einen Aufruf aus einer Form-Instanz.
grakaman
2005-11-29, 23:38:40
D.h., daß ich mich beim erstenmal doch nicht vertan hab, oder? Wohlgemerkt, ich bezog mich da explizt auf einen Aufruf aus einer Form-Instanz.
Dann hätte es in dem Fall kompiliert, aber das Problem mit dem Zentrieren wäre damit nicht gelöst. Ich weiß allerdings auch nicht, wie man das jetzt mit .NET Mitteln hinbekommt. Aber mit Win32 API Aufrufen könnte man die EnumWindows Funktion ansprechen und dort die Eigenschaften für das Fenster setzen.
edit: http://www.vbaccelerator.com/home/NET/Code/Libraries/Windows/Enumerating_Windows/EnumWindows_Code.asp
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.