Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: aldiazo en 28 de Mayo 2015, 16:43
-
Necesito saber si se puede cambiar el YES/NO en un msgbox? (Personalización de un msgbox)
-
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
-
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
-
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!