Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
753
Assunto : VB.NET
Titulo: Fazendo com que apenas uma instância do form possa ser aberta

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Uma das mudanças que mais chamaram a atenção entre o VB 6 e o VB.NET é a forma de exibir um formulário windows.

No VB.NET para exibir um formulário é necessário antes criar uma nova instância do formulário, para só então utilizar o método show. Veja como fica :

dim frm as new form2
frm.show

O problema desta cofificação é que se esse código estiver no click de um menu, por exemplo, a cada vez que o usuário clicar no menu uma nova instância é criada, podendo existir várias instâncias abertas, o que muitas vezes não é desejado.

Podemos colocar a declaração da variável fora do evento click, veja :

dim frm as form2

public sub ClickQualquer

if ?
frm=new form2
end if
frm.show

End sub

Observe a interrogação. É necessário testar algo, alguma coisa que identifique que é necessário fazer New novamente no formulário, pelo fato dele já ter sido fechado.

IsNothing somente não funciona, pois após o formulário ser fechado a variável não está vazia. Porém o formulário é destruido (dispose) no momento em que é fechado e não pode ser dado show novamente. Então isso determina como completaremos o IF :

public sub ClickQualquer

if isnothing(frm) orelse frm.isdisposed then
frm=new form2
end if
frm.show

End sub

Assim sendo se a variável estiver vazia ou tiver sido destruida fazemos o new novamente. Isso resolve o problema, se o formulário já estiver sendo exibido não será permitido exibir uma nova cópia.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 4/12/2017 11:50:00 PM
nome: janser
email: janserop@gmail.com
comentário:
Depois de penar em muito sites encontrei a solucao aqui. Parabens.

data: 10/24/2015 4:46:00 PM
nome: LaureanoNunes
email: laureanonunes@yahoo.com.br
comentário:
Parabéns pelo ótimo exemplo, funciona mesmo.
Complementando... eu utilizei no botão &Sair do form chamado o comando me.close. (não usei me.hide).
Muito obrigado pela dica!


data: 1/23/2014 12:13:00 PM
nome: Pedro Thompson
email: thompsonp17@yahoo.com.br
comentário:
Cara, MUITO OBRIGADO pela dica!

Estava procurando isso na intenet, sem sucesso... Valeu mesmo!


 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br