Autor Tema: Visual Basic personalizar msgBox texto opcione vbYesNoCancel vbAbortRetryIgnore  (Leído 18453 veces)

aldiazo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Necesito saber si se puede cambiar el YES/NO  en un msgbox? (Personalización de un msgbox)
« Última modificación: 29 de Mayo 2015, 08:43 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:manejo de msgbox
« Respuesta #1 en: 28 de Mayo 2015, 17:48 »
Hola en el curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61 tienes varios ejemplos.

No siempre un msgbox tiene que llevar yesno, puede no llevarlo o no llevarlo. Tienes muchas opciones incluso puedes personalizar. Algunas opciones son:

vbOkOnly    
vbOkCancel    
vbAbortRetryIgnore    
vbYesNoCancel    
vbYesNo    
vbRetryCancel    
vbCritical    
vbQuestion    
vbExclamation    
vbInformation

Salu2

aldiazo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
si eso lo entiendo, lo que no se,  es si hay alguna manera de cambiar lo que dicen los botones en el msgbox..

ej:

en vez de "YES", que diva "INV" y en vez de "NO" que diga "COM"

gracias por su ayuda

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
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:

Código: [Seleccionar]
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:

Código: [Seleccionar]
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!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".