Cómo obtener datos de un form principal a uno secundario en .NET

Iniciado por Juancho25, 6 Noviembre 2013, 03:30 AM

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

Juancho25

Hola,

estoy realizando un programa en el cual un textbox del form principal muestra algunos datos, y lo que quiero hacer es que lo que contiene ese textbox del form principal, se muestre en otro textbox pero de un form secundario, algo que aún no puedo lograr. Me gustaría que me ayudaran, uso .Net Framework. Gracias de antemano.

El Benjo

¿Hay algo que te impida acceder al textbox de forma directa mediante la siguiente forma?

TextBox1.Text = FormularioPrincipal.TextBoxObjetivo.Text
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

Hadess_inf

En frm secundario declara una propiedad publica:

Public Property Valor() As String

y en el load:

MiObjeto.text = me.Valor()

En frm principal:

dim frm as new frmsecundario
frm.valor = textbox1.text
frm.show()

Saludos.

yasser.17

Si entiendo lo que queres es que un form que tenga un texto en un textbox cuando abras otro form desde ese formulario aparezca el texto en el formulario secundario?
Si es eso tenes que hacer esto

bueno primero asegurarte que el textbox no este vacio, y despues mandar el texto al otro formulario cuando lo abrís

en el boton que habre el segundo formulario:
Código (vbnet) [Seleccionar]

Dim Texto as String
Texto = textbox1.text
Dim mfrm as FormSecundario
mfrm = new FormSecundario(Texto) 'Aca estoy pasando el texto como parametro, pero tengo que especificar antes en el formulario secundario sino te va dar error
mfrm.showdialog()


Y en el formulario secundario declaras una variable que se va pasar ese texto

Código (vbnet) [Seleccionar]

Class FormSecundario
dim texto as String

sub new(xTexto as Texto) ' declara que tiene que recibir una variable de tipo string cuando se cree el nuevo formulario

texto = xtexto 'Asigno el texto que se pasa a la variable en el form que lo puedo usar en cualquier momento
end sub

end class

Suerte

Eleкtro

#4
Declara una property como te ha indicado el compañero @Hadess_inf

Solo es necesario que modifiques el código del formulario que contiene el primer TextBox:

Código (vbnet) [Seleccionar]
Public Class Form1

   Public Property TB_text As String
       Get
           Return Me.TB.Text
       End Get
       Set(ByVal str As String)
           Form2.TB.Text = str
       End Set
   End Property

   Private Sub TB_TextChanged(sender As Object, e As EventArgs) _
   Handles TB.TextChanged
       Me.TB_text = sender.text
   End Sub

   Private Shadows Sub Load() Handles MyBase.Load
       Me.TB.Text = "Hello World!"
       Form2.Show()
   End Sub

End Class


La intención es separar un poco los datos, de la UI, siempre hay que tener los buenos hábitos en mente... (aunque esto no sea WPF), pero si lo prefieres diréctamente puedes ahorrarte la propiedad y utilizar el evento OnTextChanged para interactuar con el Textbox secundario:

Código (vbnet) [Seleccionar]
Public Class Form1

   Private Shadows Sub Load() Handles MyBase.Load
       Form2.Show()
       TB.Text = "Hello World!"
   End Sub

   Private Sub TB_TextChanged(sender As Object, e As EventArgs) _
   Handles TB.TextChanged
       Form2.TB.Text = sender.text
   End Sub

End Class


Saludos








josprou

Y a la inversa?

Obtener desde formPrincipal un dato de un formSecundario

Eleкtro

#6
Josino, por favor, no reabras temas antiguos, debes publicar un tema aparte para plantear la duda que tengas.

El procedimiento es el mismo en todas las Classes, declara el miembro con una visibilidad pública para el otro miembro, y entonces podrás acceder a él.

Form2.vb:
Código (vbnet,3) [Seleccionar]
Public NotInheritable Class Form2

   Friend var As String = "Hello from Form2!"

End Class


Form1.vb:
Código (vbnet) [Seleccionar]
Public NotInheritable Class Form1

   Private Sub Test() Handles MyBase.Load

       Dim value As String = Form2.var

   End Sub

End Class


Tema cerrado.

Saludos!