Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Actualizar variable entre formularios abiertos

Estas en el tema de Actualizar variable entre formularios abiertos en el foro de .NET en Foros del Web. HOLA, Tengo el siguiente caso en vbasic , lo he intentando hacer simple para explicarlo: Tengo dos formularios : Form1 y Form2 En Form1 tengo: ...
  #1 (permalink)  
Antiguo 28/11/2016, 00:51
 
Fecha de Ingreso: diciembre-2008
Ubicación: PERU
Mensajes: 294
Antigüedad: 15 años, 11 meses
Puntos: 23
Exclamación Actualizar variable entre formularios abiertos

HOLA,

Tengo el siguiente caso en vbasic, lo he intentando hacer simple para explicarlo:

Tengo dos formularios : Form1 y Form2

En Form1 tengo:
- Un label
- Un Button

Al hacer clic en el Button hace el llamado al Form2 mediante el .Show

En Form2 tengo:
- Un TextBox
- Un Button

Al hacer clic en el Button, este deberia actualizar el contenido del Label del Form1 con el Texbox del Form2

Ya intente enviar el dato por variable publica, tambien intente crear el objeto formulario Form1; Pero no se actualiza el contenido del Label1.
Ojo las dos ventanas deben estar Abiertas.


Dejo el codigo:

Form1:

Código vb:
Ver original
  1. Public Class Form1
  2.     Public val As String = "SALSA"
  3.  
  4.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  5.  
  6.         Form2.Show()
  7.  
  8.     End Sub
  9.  
  10.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  11.         Label1.Text = val
  12.     End Sub
  13. End Class

Form2
Código vb:
Ver original
  1. Public Class Form2
  2.  
  3.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  4.         Dim miform As New Form1
  5.         miform.Label1.Text = Me.TextBox1.Text 'usando el label del formulario 1
  6.        miform.val = Me.TextBox1.Text 'usando una variable publica del formulario 1
  7.        Me.Close()
  8.     End Sub
  9.  
  10. End Class
  #2 (permalink)  
Antiguo 28/11/2016, 01:39
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: Actualizar variable entre formularios abiertos

Aunque sean del mismo tipo "Form1", la variable miform declarada en el evento Button1_Click de la clase Form2, no es el mismo formulario que el que ha mostrado el Form2.

Intentaré explicarlo de forma más clara. Tu tienes una variable de tipo Form1 que llamaremos f1 cuyo valor es A.

- f1 (valor A)

En el evento f1.Button1_Click generas una variable (en realidad ni eso, estas tratando a Form2 como una clase estática cuando no lo es):

- f1.Button1_Click --> f2.Show (f2: valor B)

Dentro de f2.Button1_Click creas una variable de tipo Form1 y tu esperas que tenga los valores de "A", pero en realidad como es otra variable diferente, tiene valores diferentes.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 28/11/2016, 06:52
 
Fecha de Ingreso: diciembre-2008
Ubicación: PERU
Mensajes: 294
Antigüedad: 15 años, 11 meses
Puntos: 23
Respuesta: Actualizar variable entre formularios abiertos

Cita:
Iniciado por Malenko Ver Mensaje
Aunque sean del mismo tipo "Form1", la variable miform declarada en el evento Button1_Click de la clase Form2, no es el mismo formulario que el que ha mostrado el Form2.

Intentaré explicarlo de forma más clara. Tu tienes una variable de tipo Form1 que llamaremos f1 cuyo valor es A.

- f1 (valor A)

En el evento f1.Button1_Click generas una variable (en realidad ni eso, estas tratando a Form2 como una clase estática cuando no lo es):

- f1.Button1_Click --> f2.Show (f2: valor B)

Dentro de f2.Button1_Click creas una variable de tipo Form1 y tu esperas que tenga los valores de "A", pero en realidad como es otra variable diferente, tiene valores diferentes.
Entonces estoy haciendo mal ? en ese caso que deberia aplicar

Mas antes me cruce con el mismo problema, pero recuerdo que declare una variable formdialog.. voy a buscar en mis aplicaciones del recuerdo. Si lo encuentro respondere el post para informacion para otros usuarios.

Igual te agradecere si puedes ayudar con algunos tips.
He visto en una web que utilizan los delegates y eventos, pero aun no la tengo claro.
  #4 (permalink)  
Antiguo 28/11/2016, 07:31
 
Fecha de Ingreso: diciembre-2008
Ubicación: PERU
Mensajes: 294
Antigüedad: 15 años, 11 meses
Puntos: 23
Respuesta: Actualizar variable entre formularios abiertos

Listo, encontre una solucion que tenia botadita en mi baul de pruebas.
Les comparto, si tienen alguna otra tecnica seria bueno conocerla.

Aqui les dejo la mia:

Detalle:

FORM2:
En este formulario quite todo el codigo, pero coloquen al button la siguiente propiedad:
DialogResult = OK

FORM1, el siguiente codigo:

Código vb:
Ver original
  1. Public Class Form1
  2.     Public val As String = "SALSA"
  3.  
  4.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  5.  
  6.         Dim midialog As New DialogResult
  7.         Dim miform As New Form2
  8.  
  9.         midialog = miform.ShowDialog
  10.  
  11.         If midialog = Windows.Forms.DialogResult.OK Then
  12.  
  13.             Label1.Text = miform.TextBox1.Text 'usando el label del formulario 1
  14.            miform.Close()
  15.  
  16.         End If
  17.  
  18.     End Sub
  19.  
  20.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  21.         Label1.Text = val
  22.     End Sub
  23. End Class

  #5 (permalink)  
Antiguo 29/11/2016, 19:36
 
Fecha de Ingreso: mayo-2015
Mensajes: 15
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Actualizar variable entre formularios abiertos

Yo lo he solucionado de la siguiente manera, al llamar al nuevo form, desde el Show le pasas el mismo formulario como parametro --> form_2.Show(this)
Código Form_1:
Ver original
  1. form_2 f2=new form_2
  2. form_2.Show(this)

Código Form_2:
Ver original
  1. this.Owner.LOQUEQUIERAS

Etiquetas: formularios, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:43.