Hallo Immo
Ich kann im Prinzip auch Windows-konform "leben".
Ich wundere mich aber, warum es in der Visual-Studio-Help
so beschrieben wird, wie ich es realisieren wollte.
Unten ist ein Auszug aus den Hilfe-Seiten angezeigt.
Interpretiere ich die Hilfe falsch (habe noch wenig
Programmier-Erfahrung mit C#)?
Könnte mir jemand eine Beispiel-Anwendung schicken,
wo es funktioniert?
Wie erwähnt, ist es nicht so tragisch, wenn es nicht
funktioniert. Mit einer Lösung, auch wenn ich sie nicht
in meiner Anwendung nicht nutzen kann, könnte ich
wenigstens meine Neugierde, zu wissen was gemeint
ist, befriedigen.
Don't Worry It's Only Ones and Zeros!
################################
MessageBox.Show-Methode [C#]
Zeigt ein Meldungsfeld an.
Überladungsliste
Zeigt ein Meldungsfeld mit angegebenem Text an.
public static DialogResult Show(string);
Zeigt vor dem angegebenen Objekt ein Meldungsfeld mit dem angegebenen Text
an.
public static DialogResult Show(IWin32Window, string);
Zeigt ein Meldungsfeld mit dem angegebenen Text und der angegebenen
Beschriftung an.
public static DialogResult Show(string, string);
Zeigt vor dem angegebenen Objekt ein Meldungsfeld mit dem angegebenen Text
und der angegebenen Beschriftung an.
public static DialogResult Show(IWin32Window, string, string);
################################################
############ Wenn ich oben auf den Link klicke erscheint:
MessageBox.Show-Methode (IWin32Window, String, String) [C#]
Zeigt vor dem angegebenen Objekt ein Meldungsfeld mit dem angegebenen Text
und der angegebenen Beschriftung an.
public static DialogResult Show(
IWin32Window owner,
string text,
string caption
);
Parameter
owner Das IWin32Window, vor dem das Meldungsfeld angezeigt wird.
text Der im Meldungsfeld anzuzeigende Text.
caption Der in der Titelleiste des Meldungsfeldes anzuzeigende Text.
Rückgabewert Einer der DialogResult-Werte.
Hinweise
Mit dem owner-Parameter können Sie ein bestimmtes Objekt angeben, das die
IWin32Window-Schnittstelle implementiert, um das Meldungsfeld davor zu
platzieren. Bei einem Meldungsfeld handelt es sich um einen modalen Dialog,
d. h. nur die Objekte des modalen Formulars akzeptieren eine Eingabe
(Tastatur oder Mausklick). Das Programm muss ein modales Formular ausblenden
oder schließen (üblicherweise als Reaktion auf eine Benutzeraktion), bevor
eine Eingabe in ein anderes Formular vorgenommen werden kann.Im Meldungsfeld
wird standardmäßig eine Bestätigungsschaltfläche angezeigt.
Post by Immo Landwerth[MessageBox zentrieren]
Post by Herfried K. Wagner [MVP]Die einzige Lösung, die ich sehe, ist über einen Win32-Dialog-Hook.
Das erscheint mir aber doch recht aufwendig, wenn man den beschränkten
Nutzen betrachtet.
Zumal das nicht Windows-konform ist.
MessageBoxen waren seit jeher Desktop zentrisch. MS Access ist mir als
einzige Anwendung bekannt, die konsequent eine eigene MessageBox
verwendet (mit fettgedruckter Überschrift) die dann zentriert zu der
Anwendung erscheint. Komplett selber schreiben wäre also eine
Alternative zu einem Hook, zumal man dann sogar ohne P/Invoke auskäme.
Ist allerdings nicht minder aufwendig.
Ich persönlich mag es lieber Windows konform. Zumal es homebrewed
solutions häufig an wichtigen Details fehlt (z.B. kein Unterstützung
der Zwischenablage etc).
--
Immo Landwerth - Visual Studio 2003 - C# - XanaNews 1.16.3.1