Pasar datos de formulario activo a formulario secundario (sin saber su nombre) en VB 2010 NET

Estoy con un programa, y el problema es el siguiente: Tengo un formulario que hace de teclado virtual (TECLADO), y que se abre sobre otros formularios, que quedan detrás (secundarios), cuando hago doble click en cualquier Textbox.

Una vez abierto puedo escribir lo que quiera sobre el teclado virtual y se almacena en un campo Textbox llamado TECLABOX del mismo formulario. Al finalizar pulso sobre OK

El problema es que para poder usar TECLADO en cualquier formulario, y no solo en uno, TECLADO al terminar de escribir y pulsar sobre OK debería saber de alguna manera el nombre del formulario que está en segundo plano, para almacenar en el campo activo el contenido de TECLABOX.

Yo sé hacerlo así, pero conociendo el nombre del formulario que se queda detrás (secundario), sino no sé:

1º Traslado el contenido de TECLABOX (string) al Textbox NOMBRECLI así-> Clientes.ActiveControl.Text = Teclabox.Text

2º Cierro TECLADO así-> Me. Close()

Sabed que he probado con lo siguiente que encontré también, pero no funciona! Ya que por lo visto hace referencia a los formularios secundarios de tipo MDI, y los mios no son MDI, son normales.

Dim activeChild As Form = Me.ActiveMdiChild()
activeChild.ActiveControl.Text = Teclabox.Text
Aquí os dejo la imagen en la que se ve el formulario clientes, y encima el teclado virtual (TECLADO)

Gracias por adelantado.

1 respuesta

Respuesta
1

Si te he entendido correctamente puedes hacer ésto:
1) En un módulo de variables (puede ser el formulario principal) declara una variable/propiedad para pasarle valores del formulario "teclado". Ejemplo:

Module Variables 
   Public Property valorTeclado As String = "" 
   Private Function escribir(Optional texto As String = "") As String 
       formTeclado.textboxValor.Text = texto 
       valorTeclado= texto formTeclado.ShowDialog() 'formTeclado.Show() 
       Return valorTeclado 
   End Function 
End Module

2) En el boton "OK" del formulario "teclado":

Private Sub buttonOK_Click (sender As Object, e As EventArgs) Handles buttonOK.Click
   Variables.valorTeclado = textboxValor.Text 'Teclabox 
   Me.Close() 
End Sub

3) Uso (desde cualquier formulario):

Private Sub textboxX_DoubleClick(sender As Object, e As EventArgs) Handles textboxX.DoubleClick 
    textboxX.Text= escribir(textboxX.Text) 
End Sub

Anda! Eres Miguel de la web de programadores! jajaja, que coincidencia! es que puse la pregunta además de allí, aquí también, porque colaboro cuando puedo en todoexpertos.

Pues mira, como te he respondido en la otra web con el problema que tenía tras recitficar el código, esperaré tu respuesta allí.

Muchas gracias.

Así es, también estoy en lawebdelprogramador.com. En unos momentos veo y respondo tu pregunta allá...

modifica la función "escribir" a pública (de "Private Function..." a "Public Function...")

Bueno, para el que no sepa si con el cambio anterior ha funcionado, les diré que SÍ que ha funcionado, he cambiado tal y como me ha dicho mickehuertas la declaración de la función de Private a Public y ha funcionado a las mil maravillas!

Gracias de nuevo micke. ;-)


                    

Un gusto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas