Hola, los msgbox vienen preparados para funcionar con mensajes predeterminados y modificarlos supondría entrar en cuestiones de bajo nivel para modificar el api.
En lugar de esto lo que se suele hacer es crear una clase que cree lo que podríamos llamar un equivalente a msgbox pero personalizado con los textos que se quieran.
Para hacer esto puede usarse algo como esto.
Ir al menú proyecto y seleccionar Añadir clase (Add class)
Pegar este código:
Public Class CustomMsgBox
Inherits System.Windows.Forms.Form
Friend WithEvents btn As New Windows.Forms.Button
Friend WithEvents rtb As New Windows.Forms.RichTextBox
Public Sub New()
Me.SuspendLayout()
Me.ControlBox = False
Me.StartPosition = FormStartPosition.CenterScreen
Dim aPoint As Point
Me.Width = 450
Me.Height = My.Computer.Screen.WorkingArea.Height
aPoint.X = 5
aPoint.Y = 5
rtb.Location = aPoint
rtb.Width = Me.Width - 20
rtb.Height = Me.Height - 120
rtb.ScrollBars = RichTextBoxScrollBars.Both
Me.Controls.Add(rtb)
btn.Width = 50
btn.Height = 20
aPoint.X = (Me.Width \ 2) - (btn.Width \ 2)
aPoint.Y = Me.Height - 100
btn.Location = aPoint
btn.Text = "OK"
Me.Controls.Add(btn)
Me.ResumeLayout(False)
End Sub
Private Sub btn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn.Click
Me.Close()
End Sub
Public Overrides Property Text() As String
Get
If Me.rtb Is Nothing Then
Return ""
Else
Return Me.rtb.Text
End If
End Get
Set(ByVal value As String)
Me.rtb.Text = value
End Set
End Property
End Class
Como código para probarlo añadir un botón en un formulario y hacer esta prueba:
Option Strict On
Imports System.Environment
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cMsgBox As New CustomMsgBox
cMsgBox.Text = "Mostrando 1000 lineas...."
For index As Integer = 1 To 1000
cMsgBox.Text &= "Esta es la linea " & index.ToString & NewLine
Next
cMsgBox.Show()
'Comparación con un msgbox normal.
'No se mostrarán todas las líneas.>>
Dim outputString As String = "Mostrando 1000 líneas...."
For index As Integer = 1 To 1000
outputString &= "Esta es la linea " & index.ToString & NewLine
Next
MessageBox.Show(outputString)
End Sub
End Class
El código puede requerir pequeñas modificaciones según la versión de Visual Basic que se utilice y puede modificarse para adaptarse a lo que se pretenda.
Salu2!