Pregunta

Estoy enseñando a mí mismo VB.Net.

Este es un problema poco me he encontrado. Decir que tengo un principal Form1 en mi solicitud. Form1 llama a una segunda LoginForm la que (como su nombre indica) es una ventana de conexión con los campos de nombre de usuario / contraseña tipo. el comportamiento esperado es que LoginForm capturará datos de acceso y pasar de nuevo a Form1.

¿Cuál es la mejor manera de hacer esto?

En mi mente, yo estaba pensando en la línea de una llamada de función como 'doLogin' que sería 'show' del LoginForm, capturar los datos introducidos, a disponer de la forma y devolver los datos de acceso (probablemente en algún tipo de frijol ). De alguna manera no veo que ésto sea posible

Lo que tengo actualmente es menos elegante. LoginForm se muestra por Form1 de forma modal (es decir showDialog); un 'yo' de referencia se pasa a la segunda ventana. Después de la entrada del usuario se ha recibido en LoginForm, puse un valor en Form1, luego deshacerse.

¿Es esta la forma en que todo el mundo lo hace?

¿Fue útil?

Solución

Siempre me he pasado en un delegado a la segunda forma que puede ser llamado a 'pasar de nuevo' los valores de la segunda forma a la primera.

De esa manera usted está evitando cualquier acoplamiento fuerte.

patrón de observador clásico.


Un ejemplo de implementación es el siguiente:

Agregar una firma del delegado a Form1. En controlador de eventos de clic de botón de Form1, Form2 instancia de la clase y delegado de Form1. Asignar una función de Form2 al delegado, y llamar al delegado:

'Form1.vb
Public Delegate Sub delPassData(ByVal text As TextBox)

Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
  Dim frm As Form2 = New Form2
  Dim del As delPassData = New delPassData(AddressOf frm.funData)
  del(Me.textBox1)
  frm.Show()
End Sub

En Form2, agregar una función a la que apuntará el delegado. Esta función le asignará el texto de textBox1 a label1.

'Form2.vb
Public Sub funData(ByVal text As TextBox)
  label1.Text = text.Text
End Sub

Para pasar datos a Form1, basta con funData una función que devuelve los valores que desee.

Otros consejos

También puede recuperar datos en VB.NET utilizando "My.Forms"

La toma a continuación el texto de un cuadro de texto en el LoginForm y la pone en un cuadro de texto en el formulario principal.

Me.RetrievedDataTextBox.Text = My.Forms.LoginForm.Textbox1.Text
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top