none
control no reconoce un evento previo y crea uno con el mismo nombre pero con un "1" RRS feed

  • Pregunta

  • Buenas tardes a todos. tengo el siguiente problema, en algunas ocasiones VB .net 2013 deja de reconocerme un evento en este caso un KeyPress y cuando intento acceder a el crea otro en automatico agregando un "1", como puedo solucionar esto?

    Ejemplo

    el control es un TextBox y tiene el nombre de TBOMF, el evento KeyPress original es el siguiente: 

        Private Sub TBOMF_KeyPress(sender As Object, e As KeyPressEventArgs)
            Dim Valor As Integer = Asc(e.KeyChar)
            Dim Cadena As String = ""
            If Valor = 13 Then
                Me.TBOMF.Text = UCase(Me.TBOMF.Text)
                Cadena = UCase(Me.TBOMF.Text)
                Dim Estuco33 As Estructuras = New Estructuras
                Dim Numero As String = ""
                Dim Cantidad As Double = 0
                Estuco33.CarOMFInfo(Cadena, Numero, Cantidad)
                Dim Carac As String = Strings.Right(Numero, 1)
                If Carac = " " Then
                    Numero = Strings.Mid(Numero, 1, Len(Numero) - 1)
                End If
                If Numero.Length = 0 Then
                    MessageBox.Show("El numero de parte no existe")
                    Me.TBOMF.Text = ""
                    Exit Sub
                End If
                Me.LblNoParte.Text = Numero
                Me.LblNoClien.Text = Estuco33.Equival(Numero, 1)
                Me.LblStdPack.Text = Estuco33.stdPackPT(Numero)
                Me.LblTotOrden.Text = Estuco33.CantOrde(Cadena)
                Me.LblVend.Text = Estuco33.CantComOMF(Cadena)
                Me.DGVSerie.RowCount = Estuco33.stdPackPT(Numero)
                Me.DGVSerie.ColumnCount = 5
                Estuco33 = Nothing
                Me.TBNoPT.Focus()
            End If
        End Sub

    cuando intento accesar a el, Crea este nuevo: 

        Private Sub TBOMF_KeyPress1(sender As Object, e As KeyPressEventArgs) Handles TBOMF.KeyPress

        End Sub

    viernes, 4 de diciembre de 2015 18:01

Respuestas

  • Veo un pequeño conflicto: tu primer evento KeyPress no tiene al final el "Handles...", por lo que VB.NET no lo reconoce como un manejador de eventos (a diferencia de VB6 que reconocía los manejadores por su nombre, al llamarse "nombredecontrol_nombredeevento"). En consecuencia, cuando haces la selección del evento en el diseñador gráfico, que normalmente te llevaría al evento existente, en este caso considera que no hay ningún evento existente y decide añadirlo. Para añadirlo, de manera predeterminada le genera el nombre TBOMF_KeyPress, pero al encontrarse con que ya existe una subrutina con ese nombre, genera una nueva añadiéndole el _1.

    Solución: acuérdate siempre de poner el "Handles nombredecontrol.nombredeevento" al final de tus manejadores de eventos. Eso es lo que conecta la subrutina con el evento; en cambio, el nombre de la subrutina puede ser cualquier cosa (a diferencia de lo que ocurría en el antiguo VB).

    • Marcado como respuesta Cainah lunes, 7 de diciembre de 2015 16:51
    sábado, 5 de diciembre de 2015 8:33
  • "Cainah" escribió:

    > en algunas ocasiones VB .net 2013 deja de reconocerme un evento en este caso un KeyPress y
    > cuando intento acceder a el crea otro en automatico agregando un "1", como puedo solucionar
    > esto?

    Hola:

    Eso se debe a que seguramente has cortado/pegado el control llamado TBOMF, por tanto, implícitamente se ha llevado a cabo una operación de ELIMINACIÓN, y como no has eliminado el procedimiento llamado Sub TBOMF_KeyPress(sender As Object, e As KeyPressEventArgs), el editor de Visual Studio ha vuelvo a crear otro procedimiento añadiéndole un 1 (Private Sub TBOMF_KeyPress1) porque no pueden existir en la misma clase dos procedimientos con el mismo nombre y con el mismo número de parámetros e idénticos tipos de datos.

    Échale un vistazo a mi respuesta que aparece en la siguiente conversación:

    ¿Alguien mas ha observado esto?

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    domingo, 6 de diciembre de 2015 11:05
    Moderador

Todas las respuestas

  • Veo un pequeño conflicto: tu primer evento KeyPress no tiene al final el "Handles...", por lo que VB.NET no lo reconoce como un manejador de eventos (a diferencia de VB6 que reconocía los manejadores por su nombre, al llamarse "nombredecontrol_nombredeevento"). En consecuencia, cuando haces la selección del evento en el diseñador gráfico, que normalmente te llevaría al evento existente, en este caso considera que no hay ningún evento existente y decide añadirlo. Para añadirlo, de manera predeterminada le genera el nombre TBOMF_KeyPress, pero al encontrarse con que ya existe una subrutina con ese nombre, genera una nueva añadiéndole el _1.

    Solución: acuérdate siempre de poner el "Handles nombredecontrol.nombredeevento" al final de tus manejadores de eventos. Eso es lo que conecta la subrutina con el evento; en cambio, el nombre de la subrutina puede ser cualquier cosa (a diferencia de lo que ocurría en el antiguo VB).

    • Marcado como respuesta Cainah lunes, 7 de diciembre de 2015 16:51
    sábado, 5 de diciembre de 2015 8:33
  • En lugar de hacer doble clic, despliega el combo y elige el método. Una vez que lo elegiste, entonces haces doble clic.

    Y borras el otro del fuente.

    sábado, 5 de diciembre de 2015 16:16
  • "Cainah" escribió:

    > en algunas ocasiones VB .net 2013 deja de reconocerme un evento en este caso un KeyPress y
    > cuando intento acceder a el crea otro en automatico agregando un "1", como puedo solucionar
    > esto?

    Hola:

    Eso se debe a que seguramente has cortado/pegado el control llamado TBOMF, por tanto, implícitamente se ha llevado a cabo una operación de ELIMINACIÓN, y como no has eliminado el procedimiento llamado Sub TBOMF_KeyPress(sender As Object, e As KeyPressEventArgs), el editor de Visual Studio ha vuelvo a crear otro procedimiento añadiéndole un 1 (Private Sub TBOMF_KeyPress1) porque no pueden existir en la misma clase dos procedimientos con el mismo nombre y con el mismo número de parámetros e idénticos tipos de datos.

    Échale un vistazo a mi respuesta que aparece en la siguiente conversación:

    ¿Alguien mas ha observado esto?

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    domingo, 6 de diciembre de 2015 11:05
    Moderador
  • Gracias Sr. En efecto ese es el problema, muchas gracias.
    lunes, 7 de diciembre de 2015 16:50
  • Gracias, en efecto ese es el problema, y creo que tengo muchos procedimientos que arreglar jeje gracias por su ayuda :D
    lunes, 7 de diciembre de 2015 16:51