ORIENTACAO A OBJETO PASSAGEM DE VALORES ENTRE FORM

USUARIO.EXCLUIDOS 25/01/2010 18:50:43
#332808
E ai pessoal Tudo bem. Sou antigo aqui no vb mania mais não tenho muitos tópicos porque geralmente sempre acho o que preciso por aqui so que dessa vez eu não consegui.

Então Vamos La.

Eu sempre programei em vb6 so que resolvi migra para o vb.net e estou enfrentando um pouco de problema. Com esse migração eu realmente descobri que no vb6 eu não usava nada de orientação a objeto erro que eu pretendo consertar no vb.net ate porque vb6 não era tão orientado a objeto assim.. RS...

Minha duvida é a seguinte.

Suponha que eu tenha 2 Forms.

No primeiro form eu tenho um textbox chamado valor ,botão e uma variável chamada retornoValor que para ela cliei uma propiedade com set e get.
No segundo forma tenho uma variável chamada valorDIm para a qual cliei uma propiedade com método set e get. E também um textbox e um botão.
Quando eu clico no botão do form1 eu abro o forme 2 e passo o valor da varial valorDIm e no envendo load do form 2 passo o valor da valorDIm para o textbox do mesmo form.
Ate aqui tudo bem.
Mais o meu problema começa agora.
Eu preciso que quando o form 2 estaja fechando eu consiga setar o valor da variável retornoValor. De uma forma elegante e orientada a objeto é claro.

Abaixo estou colocando um exemplo.
‘form1------------------------------------------------------------------------------------
Public Class Form1
Private retorno As Double
Property retornoValor() As Double
Get
retornoValor = retorno
End Get
Set(ByVal value As Double)
retorno = value
End Set
End Property

Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
TextBox2.Text = retornoValor
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim formulario2 As New Form2
formulario2.valorDIm = TextBox1.Text
formulario2.ShowDialog()



End Sub
End Class

‘form2 -------------------------------------------------------------------------------------
Public Class Form2
Private valor As Double
Property valorDIm() As Double
Get
valorDIm = valor
End Get
Set(ByVal value As Double)
valor = value
End Set
End Property

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Text = valorDIm
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

[ô]meu problema esta aqui.
[ô]este codigo funciona perfeitamente mais me encomoda porque o caso quando passo os dados para o form2 ele
[ô]foi instaciado e depois eu eusei a instacia do mesmo para passar o valor neste caso aqui eu somente referenciei
[ô]o form1 não a instacia que estava rodando dele. Não achei isto legual

Form1.retornoValor = TextBox1.Text
Me.Close()


End Sub
End Class



Bem espero que de pra enteder minha duvida..
desde ja agradeço a todos..
ASHKATCHUP 25/01/2010 19:37:25
#332810
Não sei se é a melhor solução, mas acho que é uma que eu imaginei agora:

Form1


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim frm2 As New Form2()

Me.AddOwnedForm(frm2)

frm2.Valor = 1
frm2.ShowDialog()

End Sub



Form2

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim frm As Form1

frm = Me.Owner

frm.Retorno = Me.Valor

Me.Close()
End Sub
Tópico encerrado , respostas não são mais permitidas