CHAMAR METODO DE OUTRO FORM

 Tópico anterior Próximo tópico Novo tópico

CHAMAR METODO DE OUTRO FORM

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#489515 - 16/07/2019 23:01:42

TRTNCG
CAMPINA GRANDE
Cadast. em:Fevereiro/2004


Última edição em 16/07/2019 23:20:20 por TRTNCG

Gente seguinte: Tenho 2 forms (PRODUTOS, CONSULTA_PRODUTOS) no form PRODUTOS tenho um método público chamado Pesquisar, nele funciona tudo certinho, no entanto quando vou chamar este método a partir de CONSULTA_PRODUTOS, não limpa o listview que está no form PRODUTOS.

estou chamando assim:
Dim fprodutos As New produtos
fprodutos.Pesquisar(CampoDoBanco, txtde.Text, txtate.Text, "avancada")

O que está errado? não dá erro a consulta é executado pois no step by step tá trazendo certinho mais não limpa o list e preenche com o resultado.

Vejam a imagem abaixo:





Resposta escolhida #489516 - 16/07/2019 23:28:03

JABA
CABO FRIO
Cadast. em:Agosto/2005


O erro está no operador New. O operador NEW cria uma nova instância em memória. Como você criou uma nova instância desse form, acabou-se criando um outro, e agora existem dois forms produtos sendo executados. Sendo assim, tudo o que você modifica em um, não modifica no outro, pois as instâncias não são as mesmas.

Para chamar sempre o mesmo form, o vb.net permite fazer isso usando o mesmo nome do qual ele foi criado. Ex:

'Chame direto sem usar o operador New
PRODUTOS.Pesquisar(CampoDoBanco, txtde.Text, txtate.Text, "avancada")



_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#489517 - 16/07/2019 23:36:16

TRTNCG
CAMPINA GRANDE
Cadast. em:Fevereiro/2004


Citação:
:
O erro está no operador New. O operador NEW cria uma nova instância em memória. Como você criou uma nova instância desse form, acabou-se criando um outro, e agora existem dois forms produtos sendo executados. Sendo assim, tudo o que você modifica em um, não modifica no outro, pois as instâncias não são as mesmas.

Para chamar sempre o mesmo form, o vb.net permite fazer isso usando o mesmo nome do qual ele foi criado. Ex:

'Chame direto sem usar o operador New
PRODUTOS.Pesquisar(CampoDoBanco, txtde.Text, txtate.Text, "avancada")



Mesmo alterando como sugeriu, que na verdade era como coloquei no início, ainda continua da mesma forma sem limpar o listview do form PRODUTOS.




#489518 - 16/07/2019 23:45:33

JABA
CABO FRIO
Cadast. em:Agosto/2005


Última edição em 16/07/2019 23:46:25 por JABA

Se a única intenção é limpar tudo, então você pode fazer como vinha fazendo e chama-lo através da nova instância criada. Mas tenha em mente que ele não se trata mais daquele form chamado inicialmente.

Dim fprodutos As New produtos
fprodutos.Pesquisar(CampoDoBanco, txtde.Text, txtate.Text, "avancada")
fprodutos.Show()



_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#489519 - 17/07/2019 00:02:01

TRTNCG
CAMPINA GRANDE
Cadast. em:Fevereiro/2004


Citação:
:
Se a única intenção é limpar tudo, então você pode fazer como vinha fazendo e chama-lo através da nova instância criada. Mas tenha em mente que ele não se trata mais daquele form chamado inicialmente.

Dim fprodutos As New produtos
fprodutos.Pesquisar(CampoDoBanco, txtde.Text, txtate.Text, "avancada")
fprodutos.Show()



Não é somente limpar se vc olhar na tela a tela de Pesquisa fica aberta, ao clicar em OK, era para limpar o listview da tela de PRODUTOS e preencher de acordo com o resultado da pesquisa.



#489520 - 17/07/2019 00:46:59

JABA
CABO FRIO
Cadast. em:Agosto/2005


Então rapaz, como disse, quando se utiliza o New, você está fazendo referência a um novo form em memória. Ou seja, um novo form "cadastro de produtos" existirá na memória. Assim, existirão dois em memória: o que já está aberto na tela e o outro que acabou de ser criado. Isso significa que tudo o que se fizer nessa nova instância não afetará esse que já está aberto, pois se tratam de instâncias diferentes. Se você quiser limpar esse form(cadastro de produtos) já aberto ou fazer qualquer outra coisa nele, você vai ter que fazer isso manualmente usando a instância dele, não com essa nova instância que está sendo criada.

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#489525 - 17/07/2019 11:40:02

TRTNCG
CAMPINA GRANDE
Cadast. em:Fevereiro/2004


Então consegui encontrar o que estava acontecendo. Ao chamar o form PRODUTOS estava criando uma nova instância tipo:

Dim fprodutos as new produtos
fprodutos.showdialog()

daí criava outra instância, chamei o form produtos com o produtos.ShowDialog() e funcionou de boa.



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por TRTNCG em 18/07/2019 13:06:58