VALORES ENTRE FORMUL?RIOS - USANDO PROPRIEDADES
Estou tentando passar valores entre formulários usando propriedades, porem fiquei presso na seguinte situação:
Tenho 03 formulários:
Formulários de inicialização [Ô]base[Ô] (Tela Inicial)
Formulário de cadastro [Ô]form1[Ô]
formulário filtro [Ô]form2[Ô] ( quero passar o valor do formulário filtro para o formulário cadastro)
Quando o [Ô]form1[Ô] é aberto instanciado não consigo enviar dados do [Ô]form2[Ô] para o [Ô]form1[Ô].
Public Class Base
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim frm01 As Form1 = New Form1
frm01.ShowDialog()
[ô] Não consigo passar os valores de [Ô]form2[Ô] para [Ô]form1[Ô]
[ô]Form1.ShowDialog()
[ô]funciona
End Sub
End Class
Public Class Form1
Friend WriteOnly Property ValorRecebido As String
Set(ByVal value As String)
TextBox1.Text = value
End Set
End Property
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim frmFiltro As Form2 = New Form2
frmFiltro.ShowDialog()
End Sub
End Class
Public Class Form2
Private ReadOnly Property ValorEnviado As String
Get
Return TextBox1.Text
End Get
End Property
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Form1.ValorRecebido = ValorEnviado
End Sub
End Class
Gostaria de abrir o [Ô]form1[Ô] instanciado e que a rotina do filtro funcione, é possÃvel?
Citação::
No vb.net não é necessário criar as instâncias para exibi-lo.
Caro amigo JABA, tenho usuários com PC[ô]s de baixa qualidade, e notei que ao instanciar a abertura de um form, este processo ocorre de forma rápida, caso contrario o processo de load fica lento pra caramba, e olha que só tenho um pequena rotina ao abrir o formulário.
é possÃvel reverter este [Ô]atraso[Ô] de alguma forma?
Citação:Caro amigo JABA, tenho usuários com PC[ô]s de baixa qualidade, e notei que ao instanciar a abertura de um form, este processo ocorre de forma rápida, caso contrario o processo de load fica lento pra caramba, e olha que só tenho um pequena rotina ao abrir o formulário.
é possÃvel reverter este [Ô]atraso[Ô] de alguma forma?
Bom, não sei o que faria os forms ficarem mais rápidos criando-se instâncias manualmente, já que elas acabam sendo criadas de qualquer jeito pela plataforma. Pode até ser que você tenha razão, mas será que o problema não seria outro?
Citação::
Bom, não sei o que faria os forms ficarem mais rápidos criando-se instâncias manualmente, já que elas acabam sendo criadas de forma automática pela plataforma. Pode até ser que você tenha razão, mas será que o problema não seria outro?
Acredito nessa tese, no entanto por algum motivo realmente usando instancias consigo melhorar o load do form, isso em PC[ô]s de baixo processamento. Dai surgiu a necessidade de adaptar aquela rotina de passagens de valores via propriedades.
Use o método construtor no form2. E passe os valores através dele
Public Class Form2
[ô]variavel que deseja alimentar
Dim ValorRecebido As String
[ô]método construtor da classe
Public Sub New(ByVal ValorPassado As String)
[ô]e aqui passo o valor para variavel de classe
ValorRecebido = ValorPassado
End Sub
End Class
E aà quando for instanciar o form2 pra chama-lo é só passar o valor que vc quer entre parenteses
Dim frm2 As New Form2([Ô]João Maria e José[Ô])
Simples assim
Qualquer coisa dá uma lida nesse tutorial do Macoratti
http://www.macoratti.net/vbn_bas8.htm
Outra coisa simples que você também pode fazer é criar uma classe com atributos estáticos e setar valores neles. Assim independente se o form que setou os valores estiver aberto ou não os valores vão estar gravados lá de todo jeito né!
Té mais
KERPLUNK estou estudando sua sugestão, agradeço!
criei uma classe (valores) com um atributo estático (valor)
no form1 criei uma instancia do form2 na classe e não no método.
no evento do botão do form1 abro a instancia do form2
e habilito um timer que vai verificar quando o form2 for fechado.
no form2 o evento do botão envia a informação para o atributo estático da classe valores e fecha o form2.
ao fechar o form2 o evento do timer no form1 irá detectar que o form2 fechou e irá executar o método preencher pegando o valor do atributo estático na classe valores.
No mais é isso.
espero que te ajude
Té mais
Citação::
Veja se assim serve
criei uma classe (valores) com um atributo estático (valor)
no form1 criei uma instancia do form2 na classe e não no método.
no evento do botão do form1 abro a instancia do form2
e habilito um timer que vai verificar quando o form2 for fechado.
no form2 o evento do botão envia a informação para o atributo estático da classe valores e fecha o form2.
ao fechar o form2 o evento do timer no form1 irá detectar que o form2 fechou e irá executar o método preencher pegando o valor do atributo estático na classe valores.
No mais é isso.
espero que te ajude
Té mais
Grande ACCIOLLY, fiz uma pequena alteração na abertura do form filtro, estava retornando um exceção caso tentasse abri-lo depois de fechado.
Vau deixar o tópico aberto por um tempo caso queira fazer alguma consideração.