Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a difference between MsgBox and MessageBox.Show?

Is there a difference between the following two?

 msgbox()
 messagebox.show()

Some tutorials use msgbox(), and some use the other, messagebox.show()---I see that both can have an editable style, but I was wondering: Why are there two?

Is it to accommodate older programmers (who have learnt on an older version of Visual Basic)?

So in that case, which one should I use in Visual Basic 2010 (Visual Studio 2010)?

like image 812
Legendary Lambe Avatar asked Jan 10 '12 07:01

Legendary Lambe


People also ask

What is the difference between MsgBox and Errorprovider control?

There is no big difference in both MsgBox() and error provider in vb. net. In case of vb. net either use one parameter or three parameters like prompt, Buttons and title whereas for in msg box you can add additional parameter thats 1.

What is the difference between input box and message box?

VBA InputBox is used to prompt the user to enter the values. This message box is used to displaying a message and waits for the user action performed by pressing the button. A text can be return in the text box by using the InputBox function if the user clicks on the OK or Enter button.

What is the meaning of MsgBox?

MsgBox( msg, [type] [, title] ) Displays a message in a dialog box and waits for the user to choose a button. The first parameter msg is the string displayed in the dialog box as the message.

What is the use of MessageBox?

Displays a modal dialog box that contains a system icon, a set of buttons, and a brief application-specific message, such as status or error information. The message box returns an integer value that indicates which button the user clicked.


3 Answers

MsgBox() is the same as Messagebox.Show().

It exists for VB6 programmers who are used to it.

There are no rules on which one to use, but since MsgBox simply ends up delegating to MessageBox, I personally would go directly with MessageBox.

like image 179
Oded Avatar answered Oct 14 '22 05:10

Oded


Here is the source code for Msgbox. As you can see it doesn't do anything particularly interesting before calling MessageBox.Show.

<MethodImpl(MethodImplOptions.NoInlining), HostProtection(SecurityAction.LinkDemand, Resources:=HostProtectionResource.UI)> _
Public Shared Function MsgBox(ByVal Prompt As Object, ByVal Optional Buttons As MsgBoxStyle = 0, ByVal Optional Title As Object = new Object()) As MsgBoxResult
    Dim owner As IWin32Window = Nothing
    Dim text As String = Nothing
    Dim titleFromAssembly As String
    Dim vBHost As IVbHost = HostServices.VBHost
    If (Not vBHost Is Nothing) Then
        owner = vBHost.GetParentWindow
    End If
    If ((((Buttons And 15) > MsgBoxStyle.RetryCancel) OrElse ((Buttons And 240) > MsgBoxStyle.Information)) OrElse ((Buttons And &HF00) > MsgBoxStyle.DefaultButton3)) Then
        Buttons = MsgBoxStyle.OkOnly
    End If
    Try 
        If (Not Prompt Is Nothing) Then
            [text] = CStr(Conversions.ChangeType(Prompt, GetType(String)))
        End If
    Catch exception As StackOverflowException
        Throw exception
    Catch exception2 As OutOfMemoryException
        Throw exception2
    Catch exception3 As ThreadAbortException
        Throw exception3
    Catch exception9 As Exception
        Throw New ArgumentException(Utils.GetResourceString("Argument_InvalidValueType2", New String() { "Prompt", "String" }))
    End Try
    Try 
        If (Title Is Nothing) Then
            If (vBHost Is Nothing) Then
                titleFromAssembly = Interaction.GetTitleFromAssembly(Assembly.GetCallingAssembly)
            Else
                titleFromAssembly = vBHost.GetWindowTitle
            End If
        Else
            titleFromAssembly = Conversions.ToString(Title)
        End If
    Catch exception4 As StackOverflowException
        Throw exception4
    Catch exception5 As OutOfMemoryException
        Throw exception5
    Catch exception6 As ThreadAbortException
        Throw exception6
    Catch exception13 As Exception
        Throw New ArgumentException(Utils.GetResourceString("Argument_InvalidValueType2", New String() { "Title", "String" }))
    End Try
    Return DirectCast(MessageBox.Show(owner, [text], titleFromAssembly, (DirectCast(Buttons, MessageBoxButtons) And DirectCast(15, MessageBoxButtons)), (DirectCast(Buttons, MessageBoxIcon) And DirectCast(240, MessageBoxIcon)), (DirectCast(Buttons, MessageBoxDefaultButton) And DirectCast(&HF00, MessageBoxDefaultButton)), (DirectCast(Buttons, MessageBoxOptions) And DirectCast(-4096, MessageBoxOptions))), MsgBoxResult)
End Function
like image 44
Jonathan Allen Avatar answered Oct 14 '22 04:10

Jonathan Allen


There is a difference when you are attempting to mix icons with different buttons. MsgBox has predefined styles (there may be a way to create new styles).

For example:

MsgBox("Do you wish to save changes?", MsgBoxStyle.YesNoCancel, "Save Changes")

enter image description here

^ This will display a box with Yes, No and Cancel buttons without an icon.



MsgBox("Do you wish to save changes?", MsgBoxStyle.Question, "Save Changes")

enter image description here

^ This will display a box with a Question mark icon but with ONLY an OK button.



MessageBox.Show("Do you wish to save changes?", "Save Changes", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)

enter image description here

^ This will display a box with Yes, No and Cancel buttons AND a Question mark icon.



As you can see, using MessageBox.Show enables you to have any buttons you want with any icon.

like image 43
RHDxSPAWNx Avatar answered Oct 14 '22 06:10

RHDxSPAWNx