Parametros a funcion de Button_click()(SOLUCIONADO)

Iniciado por 01munrra, 26 Octubre 2015, 03:24 AM

0 Miembros y 2 Visitantes están viendo este tema.

01munrra

si quiero mostrar un dato al dar clic en un botton, como lo haria?

el funcionamiento es el siguiente, cada vez que le de clic a el mismo boton el cambie la informacion que se muestra alli dentro del boton, crei que si pasaba por parametro el dato a la funcion me funcionaria, pero no funciono, hice esto ps:

Código (vbnet) [Seleccionar]

Private Sub button_resp1_Click(sender As Object, e As EventArgs, byref res as string) Handles button_resp1.Click
button_resp1.tex = res
end sub


pero me arroja un error:
Código (vbnet) [Seleccionar]

Error 1 El método 'Private Sub button_resp1_Click(sender As Object, e As System.EventArgs, ByRef res As String)' no puede controlar el evento 'Public Event Click(sender As Object, e As System.EventArgs)' porque no tienen una firma compatible.



que me recomiendadn?

gracias!

Lekim

#1
Hola
Si pones tex, lógico que te de error porque es text. :xD

Bueno, fuera bromas  :¬¬

Ya te lo está diciendo: porque no tienen una firma compatible


No se muy bien lo que quieres hacer, haber si esto te sirve como solución:

Código (vbnet) [Seleccionar]
Option Strict On
Option Explicit On
Public Class Form1

   Public Sub EventClickRef(ByRef Res As Integer)
       Dim nRandom As New Random
       Res = nRandom.Next(5 * Res) 'Multiplica el valor devuelto por 5 y lo mete en Res
   End Sub
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim Res As Integer = 2
       EventClickRef(Res) 'Envia el valor actual de Res (2) a EventClick y devuelve otro valor
       Button1.Text = CStr(Res)
   End Sub

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   End Sub
End Class





01munrra

Cita de: Lekim en 27 Octubre 2015, 14:31 PM
Si pones tex, lógico que te de error porque es text. :xD
jajaja  ::)

fijate lo que quiero hacer, tengo una serie de respuestas; ejemplo:
Código (vbnet) [Seleccionar]

vector(0) = "amarrillo"
vector(1) = "rojo"
vector(3) = "naranja"
vector(4) = "negro"


entonces en un boton(botton_siguiente).
por otro lado tengo 2 botones mas(botton_resp1 y botton_resp2), tengo estos botones para cuando le den clic sobre cada botton(botton_resp1 y botton_resp2) salga:
Código (vbnet) [Seleccionar]

botton_resp1 ="amarrillo"
botton_resp2 = "rojo"


y cuando presione el boton_siguinte salga=
Código (vbnet) [Seleccionar]

botton_resp1 ="naranja"
botton_resp2 = "negro"


como puedo hacer eso?....

me tiene loco por que no he podido.... :o

Lekim

#3


Código (vbnet) [Seleccionar]

Public Class Form1
   Dim Vector() As String = {Nothing, "Amarillo", "Rojo", "Naranja", "Negro"}
   Dim Conmutador As Boolean
   Private Sub botton_siguiente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles botton_siguiente.Click
       Conmutador = IIf(Conmutador = False, True, False)
       Select Case Conmutador
           Case False
               Me.botton_resp1.Text = Vector(1)
               Me.botton_resp1.BackColor = Color.Yellow : Me.botton_resp1.ForeColor = Color.Black
               Me.botton_resp2.Text = Vector(2)
               Me.botton_resp2.BackColor = Color.Red : Me.botton_resp2.ForeColor = Color.Black
           Case True
               Me.botton_resp1.Text = Vector(3)
               Me.botton_resp1.BackColor = Color.Orange : Me.botton_resp1.ForeColor = Color.Black
               Me.botton_resp2.Text = Vector(4)
               Me.botton_resp2.BackColor = Color.Black : Me.botton_resp2.ForeColor = Color.White
       End Select
       Me.Text = Conmutador
   End Sub

   Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
       Me.botton_resp1.Text = Vector(1)
       Me.botton_resp1.BackColor = Color.Yellow : Me.botton_resp1.ForeColor = Color.Black
       Me.botton_resp2.Text = Vector(2)
       Me.botton_resp2.BackColor = Color.Red : Me.botton_resp2.ForeColor = Color.Black
   End Sub
End Class



TAMBIÉN SE PUEDE ESCRIBIR ASÍ:
Código (vbnet) [Seleccionar]
Public Class Form1
    Dim Vector() As String = {Nothing, "Amarillo", "Rojo", "Naranja", "Negro"}
    Dim Conmutador As Boolean
    Private Sub botton_siguiente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles botton_siguiente.Click
        Conmutador = IIf(Conmutador = False, True, False)
        Select Case Conmutador
            Case False
                With botton_resp1
                    .Text = Vector(1) : .BackColor = Color.Yellow : .ForeColor = Color.Black
                End With
                With botton_resp2
                    .Text = Vector(2) : .BackColor = Color.Red : .ForeColor = Color.Black
                End With
            Case True
                With botton_resp1
                    .Text = Vector(3) : .BackColor = Color.Orange : .ForeColor = Color.Black
                End With
                With botton_resp2
                    .Text = Vector(4) : .BackColor = Color.Black : .ForeColor = Color.White
                End With
        End Select
        Me.Text = Conmutador
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        With botton_resp1
            .Text = Vector(1) : .BackColor = Color.Yellow : .ForeColor = Color.Black
        End With
        With botton_resp2
            .Text = Vector(2) : .BackColor = Color.Red : .ForeColor = Color.Black
        End With
    End Sub
End Class

01munrra

Oye....! Gracias me ha servido bastante...... ;-) ;-) ::)

algo asi fue lo que hice, claro esta es una prueba, pero lo hace.

Código (vbnet) [Seleccionar]

Public Class Form1

    Dim vt(10) As String
    Dim cont As Integer = 0

    Private Sub cargar(ByRef vt() As String)

        vt(0) = "algo"
        vt(1) = "otro"
        vt(2) = "otro algo"
        vt(3) = "algo mas"
        vt(4) = "mucho mas"
        vt(5) = "otro mucho mas"
        vt(6) = "muchas cosas mas"
        vt(7) = "infinitas cosas"
        vt(8) = "infinitas cosas mas"
        vt(9) = "Fin de cosas"


    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        cargar(vt)
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Button1.Text = ""
        Button2.Text = ""

        If cont = 9 Then
            'generar Salir
        Else
            cont = cont + 2
        End If

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Button1.Text = vt(cont)
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Button2.Text = vt(cont + 1)
    End Sub
End Class

Eleкtro

#5
Cita de: 01munrra en 26 Octubre 2015, 03:24 AMme arroja un error:
Código (vbnet) [Seleccionar]

Error 1 El método 'Private Sub button_resp1_Click(sender As Object, e As System.EventArgs, ByRef res As String)' no puede controlar el evento 'Public Event Click(sender As Object, e As System.EventArgs)' porque no tienen una firma compatible.



que me recomiendadn?

Lo que yo te recomiendo, una vez solucioando el problema, es que empieces a documentarte sobre lo que es un event-handler y un delegado en general, para comprender. No puedes pretender cambiar la firma de un handler para pasarle "X" parámetros como estabas intentando hacer, pues no son metodos cualquiera, son metodos destinados a controlar un evento, por ende, deben recibir unos parámetros específicos (declarados por el evento que sea).


Saludos