Problema con los controles dentro de un TabPage.

16/02/2007 - 12:54 por Ocobo | Informe spam
Hola,

Dentro de un TabPage tengo insertado 3 controles TextBox.
Deseo que pulsado la tecla F2, y dependiendo del Texbox donde me encuentre,
me inserte un texto determinado. Tengo el siguiente código para controlar las
pulsaciones de teclado a nivel de formulario:

Private Sub Prueba_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

If e.KeyChar = Convert.ToChar(Keys.F2) And Me.ActiveControl.Name =
"Provincia_" Then

e.Handled = True
' Ponme en el texbox, lo que sea

End If
End Sub

El problema es que Me.ActiveControl.Name me da el nombre del TabPage, no el
nombre del TextBox que está dentro del TabPage.

Cómo puedo referirme al nombre del control del Textbox dentro de un TabPage.

Gracias.

Preguntas similare

Leer las respuestas

#1 SoftJaén
16/02/2007 - 15:16 | Informe spam
"Ocobo" preguntó:

Cómo puedo referirme al nombre del control del Textbox
dentro de un TabPage.



Hola:

Para lo que deseas hacer, no hace falta averiguar el nombre del control
TextBox; simplemente debes de obtener el control actualmente activo en el
formulario, y si es un control de texto, indicarle que escriba el texto
correspondiente.

En el evento «KeyDown» del formulario (que para estas cosas es mejor que el
evento «KeyPress»), ejecuta lo siguiente:

Private Sub Prueba_KeyDown( ... ) Handles Me.KeyDown

If e.KeyCode = Keys.F2 Then

' Se ha pulsado la tecla F2.
'
e.Handled = True

' Obtenemos el control que tiene el foco.
'
Dim ctrl As Control = Me.ActiveControl

' Si es un control de texto el que tiene
' el foco, escribimos en él.
'
If TypeOf (ctrl) Is TextBox Then
ctrl.Text = "Lo que sea."
End If

End If

End Sub

Para qiue se desencadene el evento «KeyDown», doy por sentado que la
propiedad «KeyPreview» del formulario se encuentra establecida a «True».

Un saludo

Enrique Martínez
[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.
Respuesta Responder a este mensaje
#2 Ocobo
16/02/2007 - 16:47 | Informe spam
Gracias por contestar.

Necesito de alguna forma discriminar los textbox, ya que en cada uno he de
insertar un texto distinto. Por eso, yo pensaba hacerlo por el nombre del
control, pero tengo el problema que como control activo me asinga el TabPage.
Respuesta Responder a este mensaje
#3 SoftJaén
16/02/2007 - 19:08 | Informe spam
"Ocobo" escribió:

..., pero tengo el problema que como control activo me asinga el TabPage.



Si un control de texto, que se encuentre incluido en el contenedor TabPage,
tiene el foco, el control activo se obtiene mediante la propiedad
«ActiveControl», al menos, así es como lo he obtenido en el ejemplo que
acabo de probar con Visual Basic 2005.

' Obtenemos el control que tiene el foco.
'
Dim ctrl As Control = Me.ActiveControl

Enrique Martínez
[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.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida