Autor Tema: Agregar eventos a textbox creados en tiempo de ejecucion  (Leído 5885 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado llAudioslavell

  • Sv Member
  • ***
  • Mensajes: 126
Agregar eventos a textbox creados en tiempo de ejecucion
« : febrero 27, 2013, 05:52:33 pm »
Estoy creando un pequeño juego y me eh topado con un problema...  dentro del for estoy creando una cantidad de textbox, cuya cantidad es igual a la cantidad de caracteres que tendra la variable cadena...
El problema es que tengo que manejar algunos eventos de los textbox como el LostFocus y otros mas pero nose como tener acceso a estos eventos  :embarassed: ...

        Dim cadena As String = ""
        Dim random As New Random
        Dim asc As Integer
        For i As Integer = 0 To 6
            Dim txt As New TextBox
            txt.Location = New Point(40 * i, 150)
            txt.Name = "Textbox1" & i
            txt.Visible = True
            txt.Multiline = True
            txt.Height = 40
            txt.Width = 40
            Me.Controls.Add(txt)
            asc = random.Next(65, 90)
            cadenas &= Chr(asc)
        Next
        Label1.Text = cadenas

Desconectado murraybozinsky

  • Sv Jr.
  • **
  • Mensajes: 54
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #1 : febrero 27, 2013, 06:28:37 pm »
proba con AddHandler.

en tu caso podria ser:

AddHandler txt.click,  AddressOf Evento_click

Sub Evento_click
     msgbox("aqui hace algo")
End Sub

Desconectado llAudioslavell

  • Sv Member
  • ***
  • Mensajes: 126
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #2 : febrero 27, 2013, 07:13:28 pm »
proba con AddHandler.

en tu caso podria ser:

AddHandler txt.click,  AddressOf Evento_click

Sub Evento_click
     msgbox("aqui hace algo")
End Sub

Gracias !! ya lo resolvi... ahora me estan naciendo mas dudas en como manejar esto.. estoy tratando de entenderlo.... si ya no puedo mas lo posteo  :thumbsup:

Desconectado llAudioslavell

  • Sv Member
  • ***
  • Mensajes: 126
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #3 : febrero 27, 2013, 07:53:16 pm »
Bien ahora tengo otra duda...  estoy validando estos textbox y quiero que solo se pueda teclear letras del abecedario.. esto ya yo lo puedo resolver no hay problema...

     If e.KeyChar >= Chr(97) And e.KeyChar <= Chr(98) Then
            e.Handled = True
        End If
esto lo probe agregando via diseño un textbox
aqui esta mi  metodo para el evento KeyPress

  Private Sub Evento_KeyPress()

    End Sub
el problema es que me faltarian estos parametros
(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
para poder manejar el evento KeyChar ... guiame un poco porfavor que me estoy desorientando  :cry:

Desconectado llAudioslavell

  • Sv Member
  • ***
  • Mensajes: 126
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #4 : febrero 27, 2013, 10:05:00 pm »
si que es dificil manejar eventos en tiempo de ejecucion  :cry:
    Private Sub Evento_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        e.Handled = True
        If e.KeyChar >= Chr(65) And e.KeyChar <= Chr(90) Then
            e.Handled = False
        End If
    End Sub
nose poque cuando quiero borrar el contenido del textbox no ocurre nada =/
tambien quiero que al precionar una tecla me diriga el focus hacia el siguiente textbox...

ayudenme porfavor  :cry:

Desconectado kikeuntercio

  • Sv Vampire Team ®
  • The Communiter-
  • ***
  • Mensajes: 1544
  • -] java Adict [-
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #5 : febrero 27, 2013, 10:24:22 pm »
de el char45 al char90 son el abcdario te falta permitir el char para backspace e intro
VampireTeam

Desconectado llAudioslavell

  • Sv Member
  • ***
  • Mensajes: 126
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #6 : febrero 27, 2013, 10:37:49 pm »
de el char45 al char90 son el abcdario te falta permitir el char para backspace e intro

ahhhhhh claro !!!!!!!!!!!! que tonto ...
ayudame con mi otro problema .. !!!  necesito que cuando se ingrese un caracter en el 1er textbox, este pierda el focus y se le asigne al siguiente..solo dame una idea logica que se pueda realizar para poder hacerlo....

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #7 : febrero 28, 2013, 08:17:03 am »
si sólo queres la lógica te la voy a escribir en spanish XD

if length del textBox1 es igual a 1 then texto2.focus


algo que te ayudaría como plus, sería modificar la propiedad de cuantos caracteres permite el textBox
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado kikeuntercio

  • Sv Vampire Team ®
  • The Communiter-
  • ***
  • Mensajes: 1544
  • -] java Adict [-
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #8 : febrero 28, 2013, 07:38:32 pm »
tambien dentro de la parte verdadera del if de los char permitidos haces el paso del enfoque text2.setfocus
VampireTeam

Desconectado llAudioslavell

  • Sv Member
  • ***
  • Mensajes: 126
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #9 : marzo 01, 2013, 07:29:53 am »
si sólo queres la lógica te la voy a escribir en spanish XD

if length del textBox1 es igual a 1 then texto2.focus


algo que te ayudaría como plus, sería modificar la propiedad de cuantos caracteres permite el textBox

Claro!! me estaba olvidando de esa propiedad gracias !!!

Desconectado llAudioslavell

  • Sv Member
  • ***
  • Mensajes: 126
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #10 : marzo 01, 2013, 07:32:17 am »
tambien dentro de la parte verdadera del if de los char permitidos haces el paso del enfoque text2.setfocus
Entonces va dentro del metodo que eh creado... pero como voy a manejar los textbox si los estoy creando en tiempo de ejecucion.. quiero decir que no puedo manejarlo asi: textbox1..........  o  lo haria manipulando al parametro "sender" ..  :huh:

ayuda !!!  :cry:

Desconectado kikeuntercio

  • Sv Vampire Team ®
  • The Communiter-
  • ***
  • Mensajes: 1544
  • -] java Adict [-
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #11 : marzo 01, 2013, 09:51:53 pm »
dentro de la parte verdadera del if de los char permitidos podes mandar a crear el nuevo textbox, y al crearlo mandas el enfoque a ese nuevo objeto.
los creas segun veo en tu codigo asi: "Textbox1" & i el nombre del texbox, eso en otros lenguajes podria funcionar pero en .net creo que tenes que hacerlo asi:
estos declaralos debajo de public class (el nombre de tu formulario)
Dim n As Integer = 1
Dim txt() As TextBox

esto dentro de un proceso x
ReDim Preserve txt(n)
       txt(n) = New TextBox
        txt(n).Height = 40
        txt(n).Width = 40
        txt(n).Location = New Point(40 * n, 150) '
        Me.Controls.Add(txt(n))

        txt(n).Focus()
        n += 1

de hecho probalo asi poniendo el codigo anterior en un boton y saca tus conclusiones.
VampireTeam

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #12 : marzo 02, 2013, 08:20:38 am »
dentro de la parte verdadera del if de los char permitidos podes mandar a crear el nuevo textbox, y al crearlo mandas el enfoque a ese nuevo objeto.
los creas segun veo en tu codigo asi: "Textbox1" & i el nombre del texbox, eso en otros lenguajes podria funcionar pero en .net creo que tenes que hacerlo asi:
estos declaralos debajo de public class (el nombre de tu formulario)
Dim n As Integer = 1
Dim txt() As TextBox

esto dentro de un proceso x
ReDim Preserve txt(n)
       txt(n) = New TextBox
        txt(n).Height = 40
        txt(n).Width = 40
        txt(n).Location = New Point(40 * n, 150) '
        Me.Controls.Add(txt(n))

        txt(n).Focus()
        n += 1

de hecho probalo asi poniendo el codigo anterior en un boton y saca tus conclusiones.

juela.... por ahi vi en .Net una onda donde podes poner algo asi

formulario.selectNextControl

lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado kikeuntercio

  • Sv Vampire Team ®
  • The Communiter-
  • ***
  • Mensajes: 1544
  • -] java Adict [-
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #13 : marzo 02, 2013, 01:15:40 pm »
si no me equivoco eso funciona correctamente cuando los indices  de cada control tienen el orden correcto, ya en modo de ejecucion y creando nuevos controles no estoy seguro que sea lo mas indicado, pero igual podes probar no perdes nada al contrario ganas experiencia
VampireTeam

Desconectado llAudioslavell

  • Sv Member
  • ***
  • Mensajes: 126
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #14 : marzo 03, 2013, 02:02:20 am »
dentro de la parte verdadera del if de los char permitidos podes mandar a crear el nuevo textbox, y al crearlo mandas el enfoque a ese nuevo objeto.
los creas segun veo en tu codigo asi: "Textbox1" & i el nombre del texbox, eso en otros lenguajes podria funcionar pero en .net creo que tenes que hacerlo asi:
estos declaralos debajo de public class (el nombre de tu formulario)
Dim n As Integer = 1
Dim txt() As TextBox

esto dentro de un proceso x
ReDim Preserve txt(n)
       txt(n) = New TextBox
        txt(n).Height = 40
        txt(n).Width = 40
        txt(n).Location = New Point(40 * n, 150) '
        Me.Controls.Add(txt(n))

        txt(n).Focus()
        n += 1

de hecho probalo asi poniendo el codigo anterior en un boton y saca tus conclusiones.

tengo una duda....
"dentro de la parte verdadera del if de los char permitidos podes mandar a crear el nuevo textbox"
pero los textbox ya los tengo creado en el for y este for va en el evento load del formulario.. osea se crea al cargar el formulario....  :dumb:

Desconectado kikeuntercio

  • Sv Vampire Team ®
  • The Communiter-
  • ***
  • Mensajes: 1544
  • -] java Adict [-
Re:Agregar eventos a textbox creados en tiempo de ejecucion
« Respuesta #15 : marzo 03, 2013, 04:40:14 pm »
segun entiendo el juego luego de digitar algo en un textbox, se crea el otro textbox y se pasa el enfoque a ese nuevo textbox, entonces dentro de la validacion que haces para las letras que vas a permitir.
  If e.KeyChar >= Chr(97) And e.KeyChar <= Chr(98) Then
            e.Handled = True
        End If
podes dejar algo asi:
If e.KeyChar >= Chr(97) And e.KeyChar <= Chr(98) Then
            e.Handled = True
     evento_crea_texbox()
        End If
donde evento_crea_textbox() sera el codigo que te puse arriba en especifico el proceso x


si creas todos los textbox desde el load, solo necesitas pasar el enfoque y para ello no creo que te funcione el metodo que estas usando, tendrias a fuerza que reemplazar segun el codigo que te indique anteriormente, para saber a que texbox vas a pasar el enfoque te puede servir la variable publica -n- entonces en la validacion para las letras permitidas te quedria algo asi:
If e.KeyChar >= Chr(97) And e.KeyChar <= Chr(98) Then
            e.Handled = True
     txt(n).Focus()
     n += 1
        End If
claro que aqui tendrias que tomar en cuenta cuando estas en el final de los texbox, porque sino te dará error porque no encuentra el texbox6, suponiendo que solo creastes 5 texbox.
VampireTeam