MsgBox und MessageBox.Show

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Eierlein.

    MsgBox und MessageBox.Show

    Hallo Leute,

    ich bin neu hier im Forum. Ich habe unter Visual Studio 2019 mit VB ein Problem/Verständnisfrage.

    Ich will ein einfaches Programm zum Testen schreiben.

    Ich starte also Visual Studio und gehe auf Neues Projekt erstellen. Bei den Vorlagen wähle ich Visual Basic, Windows und Konsole aus.Dann starte ich Konsolen-App (.NET Core) aus.Weiter. Eingabe Projektname ErstesProjekt. Dann erstellen. Es wird ein Beispiel direkt geladen:
    [

    Quellcode

    1. Module Program
    2. Sub Main(args As String())
    3. Console.WriteLine("Hello World!")
    4. End Sub
    5. End Module


    Das Programm läuft auch. Statt Console.WriteLine(…) würde ich lieber mal ne MsgBox ausgeben lassen: MsgBox "Hallo Welt!"Hier erhalte ich eine Fehlermeldung. Methodenargumente müssen in Klammern stehen. "MsgBox" wurde nicht deklariert. Aufgrund der Schutzstufe ist unter Umständen kein Zugriff möglich.Setze ich den Text zusätzlich noch in Klammern MsgBox("Hallo Welt!"), erhalte ich wieder den MsgBox-Fehler.Wie rufe ich denn nun ne MsgBox auf?'97/98 habe ich eine Programmierausbildung (6 Monate) gemacht, u. a. hatten wir auch Visual Basic. Version 4 oder 5, bin mir nicht mehr sicher. Jedenfalls konnte ich so ohne Probleme eine MsgBox aufrufen.
    Habe bischen gegoogled und bin dann auf MessageBox.Show(…) gestoßen. Da kam aber auch ne Fehlermeldung ...MessageBox wurde nicht deklariert...
    Wie komme ich weiter?
    Sub Main(args As String()) kommt immer automatisch? Kann ich die Prozedur umbenennen? Oder mit leerem Text das Modul anlegen?

    Vielen lieben Dank!

    LG Data 2006
    PS: Bei Office 2016 funktioniert die MsgBox unter Excel und auch unter Access aber.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Data2006“ ()

    Willkommen im Forum.
    Ja, bei Office funktioniert das, weil das noch VBA ist, was viele Ähnlichkeiten mit VB6 hat.
    Aber: .Net-Code+Konsole hat nun wirklich gar nix mehr mit VB6 zu tun. Ok, maßlos übertrieben, aber zwischen den beiden liegen ca. 20 Jahre Entwicklungszeit. Die MessageBox gehört zu WinForms. Wenn Du die willst, musst Du auch ein WinForms-Projekt erstellen. In WPF gibt es die auch, dann im System.Windows-Namespace. Aber in der Konsole ist diese m.E. nicht verfügbar. Würde da auch nicht hingehören.
    Die Startprozedur in einer Konsolenapp muss Main heißen, damit der Compiler weiß, wo es losgeht. Konvention. Die args sind die Parameter, die man der App als Parameterliste in der Kommandozeile mit an die Hand geben kann.

    btw: bitte Post nachbearbeiten und CodeTags verwenden
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Data2006 Ebenfalls: Willkommen im Forum. :thumbup:
    Jou, MessageBox und Console sind disjunkt.
    Klar kannst Du Dir die System.Windows.Forms.dll als Verweis Deinem Projekt hinzufügen, aber das ist ungefähr so, als ob Du einem UBoot Flügel anbaust, damit es auch fliegen kann.

    Data2006 schrieb:

    Kann ich die Prozedur umbenennen?
    Nein, das ist der Einstiegspunkt des Programms, Du wirst einen Compilerfehler bekommen.
    Aber:
    Probiere es aus und sieh nach, was da passiert.
    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!
    Ok. Hab Quellcode überarbeitet.

    LG Data2006


    Wenn ich MsgBox so nicht verwenden kann, gibt es bei der Konsole keine Möglichkeit einen Text in so einer Box auszugeben? Gehört das andere MessageBox.Show auch nicht mehr zur Konsole? Text nur Console.WriteLine("...") schreiben?

    Was muß ich denn für ein WinForms-Projekt auswählen?
    Ich wähle doch zuerst Visual Basic und dann in der Mitte Windows aus. Aber was rechts?

    Danke und gute Nacht
    Data2006

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

    Data2006 schrieb:

    Was muß ich denn für ein WinForms-Projekt auswählen?
    VB, Neues Projekt erstellen und auswählen:

    Je nach dem, mit welchem Studio Du arbeitest, kann das etwas anders aussehen,
    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!
    Hallo zusammen.

    Ich habe die Windows Form-Apps (.NET Framework) gefunden und konnte ein DrittesProjekt anlegen. Vielen Dank dafür.

    FolgendeR Code kann nicht ausgeführt werden:

    Quellcode

    1. Public Class Form1 msgbox("Dies ist ein Dritter Test")End Class
    Dann habe ich ein Modul hinzugefügt und folgende Prozedur geschrieben:

    Quellcode

    1. Module Module1
    2. Sub Test()
    3. MsgBox("Dies ist ein dritter Test")
    4. End Sub
    5. End Module


    Es wird aber nur die Form1 angezeigt. Ich dachte da könnte ich die MsgBox benutzen. Falsch gedacht?

    LG Data2006


    PS: Ich habe Visual Studio 2019 (Enterprise), hatte ich das nicht am Anfang geschrieben? ;)
    @Data2006 In eine Klasse kannst Du keinen solchen Befehl schreiben, in eine Klasse kommen Variablen, Properties und Prozeduren.
    Du musst ein Ereignis organisieren, z.B. ein Button_Click. Zieh auf die Form einen Button, doppelklicke auf den und da rein schreibst Du Deinen Befehl.
    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!
    Versuch's mal mit der API-Funktion

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Module Module1
    3. <DllImport("user32.dll")> _
    4. Public Function MessageBox(HWnd As Integer, _
    5. lptext As String, lpcaption As String, type As Integer) As Integer
    6. End Function
    7. '-------------------------------------------------------------------------------
    8. Sub Main()
    9. 'MB_ICONINFORMATION = 64%, MB_OKCANCEL = 1%, MB_DEFBUTTON2 = 256%
    10. MessageBox(0, "Info", "Hallo...", 64% Or 1% Or 256%)
    11. ' Console.Read()
    12. End Sub
    13. End Module


    Da in der Console die Konstanten nicht deklariert sind, hier eine Übersicht.
    Entweder deklarieren oder die Zahlen verwenden.

    Quellcode

    1. 'For use with MSGBOX:
    2. MB_OK = &H00000000% = 0
    3. MB_OKCANCEL = &H00000001% = 1
    4. MB_ABORTRETRYIGNORE = &H00000002% = 2
    5. MB_YESNOCANCEL = &H00000003% = 3
    6. MB_YESNO = &H00000004% = 4
    7. MB_RETRYCANCEL = &H00000005% = 5
    8. MB_CANCELTRYCONTINUE = &H00000006% = 6
    9. MB_ICONHAND = &H00000010% = 16
    10. MB_ICONQUESTION = &H00000020% = 32
    11. MB_ICONEXCLAMATION = &H00000030% = 48
    12. MB_ICONASTERISK = &H00000040% = 64
    13. MB_USERICON = &H00000080% = 128
    14. MB_ICONWARNING = &H00000030% = 48
    15. MB_ICONERROR = &H00000010% = 16
    16. MB_ICONINFORMATION = &H00000040% = 64
    17. MB_ICONSTOP = &H00000010% = 16
    18. MB_DEFBUTTON1 = &H00000000% = 0
    19. MB_DEFBUTTON2 = &H00000100% = 256
    20. MB_DEFBUTTON3 = &H00000200% = 512
    21. MB_DEFBUTTON4 = &H00000300% = 768
    22. MB_APPLMODAL = &H00000000% = 0
    23. MB_SYSTEMMODAL = &H00001000% = 4096
    24. MB_TASKMODAL = &H00002000% = 8192
    25. MB_HELP = &H00004000% = 16384 ' Help Button
    26. MB_NOFOCUS = &H00008000% = 32768
    27. MB_SETFOREGROUND = &H00010000% = 65536
    28. MB_DEFAULT_DESKTOP_ONLY = &H00020000% = 131072
    29. MB_TOPMOST = &H00040000% = 262144
    30. MB_RIGHT = &H00080000% = 524288
    31. MB_RTLREADING = &H00100000% = 1048576
    32. MB_SERVICE_NOTIFICATION = &H00200000% = 2097152
    33. MB_SERVICE_NOTIFICATION_NT3X = &H00040000% = 4194304
    34. MB_TYPEMASK = &H0000000F% = 15
    35. MB_ICONMASK = &H000000F0% = 240
    36. MB_DEFMASK = &H00000F00% = 3840
    37. MB_MODEMASK = &H00003000% = 12288
    38. MB_MISCMASK = &H0000C000% = 49152