Messagebox mit dunklem Hintergrund

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Peter329.

    Messagebox mit dunklem Hintergrund

    Hi,

    meine Programme verwenden dunklen Hintergrund und weiße Schrift. Deshalb wäre es nett, wenn ich Messagebox.Show ebenfalls mit dunklem Hintergrund und weißer Schrift aufrufen könnte.

    Natürlich kann ich das Dingens als Form "nachbauen" ... aber es gibt insgesamt 21 Überladungen ... und ich will ja nur eine klitzekleine Änderung.

    Ein wesentliches Prinzip der OO ist doch die Vererbung. Kann ich nicht eine Klasse bauen, die alles von MessageBox erbt und nur die Farben ändert ?

    Ich hab das versucht umzusetzen, scheitere aber schon auf den ersten Metern:

    VB.NET-Quellcode

    1. Public Class MessageboxDark
    2. Inherits MessageBox


    Der Kompiler vermeldet, dass die MessageBox-Klasse nicht geerbt werden kann, weil sie keine (zugreifbare) Sub-New besitzt.

    Vermutlich erbt die Message-Box Klasse den Konstruktur von WindowsForms ? Oder führt den implizitz aus ?

    Wie auch immer ... ich komme nicht weiter, Geht das was ich da vorhabe überhaupt ?

    Ich weiß, da fehlen mir (ein ums andere Mal) Basiskenntnisse. Ich bitte also um äußerst nachsichtige Hilfestellung ... :)

    LG
    Peter
    Moin,
    MessageBox erbt meines Wissens nach nicht von Form und kann auch nicht vererbt werden. Was du da vorhast, wird so nicht funktionieren. Eine eigene Form ist definitiv die schnellere Option. Wenn du keinen Bock hast, die zu Programmieren: WinForms mit Viewmodel. Da ist ein Klassendesign drin, von dem du den Großteil übernehmen kannst... und dunkel ist sie auch schon :D ;)


    Ein Computer wird das tun, was du programmierst - nicht das, was du willst.
    Ja, es gibt einen Haufen Überladungen. Aber wieviele nutzt Du davon in Deinen Programmen? Daher sollte es jetzt nicht so aufwendig sein, die relevanten nachzubauen.
    Das mit dem Erben geht wohl deshalb nicht, weil die MessageBox nur ein Container für Shared-Functions ist, die ihrerseits erst ein Form erstellen, abhängig davon, welche Überladung aufgerufen wird. So mache ich es nämlich auch bei meiner selbstgebauten InputBox, da ich mich komplett vom VB6-Namespace lösen wollte.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    @Peter329 Wenn es möglich ist, sich den FensterHandle der MessageBox zu holen, könnte man über den Public Properties setzen.
    Das ist in jedem Falle aufwändiger als eine eigene MessageBox.
    Ich hab mir mal eine MessageBox-Klasse gebaut mit denselben Shared Prozeduren wie sdie Framework-MessageBox, da muss nur der Name der haltenden Klasse getauscht werden und feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich hab es bei mir im Programm wie Kollege @RodFromGermany gemacht.

    Da hab ich dann Allerlei Möglichkeiten mit Beschriftungen und Bildchen... Geht an sich recht fix, das hast in nen paar Minuten umgesetzt.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Jau ... da habt ihr mich locker überzeugt, auch eine eigene Klasse zu bauen.

    Das geht tatsächlich recht einfach.

    Eine Kleinigkeit noch: die MessageboxIcons sind nur eine Enumeration ... kann man die Grafiken dazu irgendwo her bekommen oder muss ich die zusammensuchen ?

    [edit]

    Für die Frage nach der automatischen Größenanpassung der TextBox habe ich in einen eigenen Thread aufgemacht, weil das mit dieser Thematik nicht unbeding zusammenhängt.

    LG
    Peter

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Peter329“ ()

    Peter329 schrieb:

    kann man die Grafiken dazu irgendwo her bekommen
    Klar doch:

    VB.NET-Quellcode

    1. pbIcon.Image = SystemIcons.Error.ToBitmap()
    usw.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    wow ! Genial ! Das war ja genau das, was ich gesucht hatte ! Danke !

    Jau ... damit wäre dann die Sache mit der eigenen MessageBox gelöst !

    Die Frage nach der automatischen Größenanpassung der TextBox ist noch offen ... aber die habe ich ja in einen eigenen Thread ausgelagert.

    Ich bin wieder einmal begeistert ! Recht herzlichen Dank an alle Ratgeber, Daumen hoch und einen schönen Abend !

    LG
    Peter