Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JuNiNhO__

Como eu faço pra saber se uma classe foi instanciada ???

Recommended Posts

Pessoal, Estou iniciando meus estudos a nova plataforma .NET e gostaria de saber como eu faço uma função que verifique se uma classe já foi instanciada no sistema todo... Exemplo: não quero que uma janela seja instanciada mais de uma vez no meu sistema e outras sim... Obrigado pelo ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

como você naum passou a linguagem vai nas duas mais usadas na plataforma msm.... heheh

 

C#, verificar se é igual a null

if (frmCliente == null)			{				frmCliente = new frmCliente();			}			frmCliente.Show();
VB, verificar se esta nothing

If (frmCliente Is Nothing) Then			frmCliente= New frmCliente()		End If		frmCliente.Show()
t+

bom fds

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda dos colegas... mais ainda estou começando e estou meio perdido....No meu vb6 eu abria uma unica instancia de uma janela... tipo ... cadastro de clientes....e assim o sistema usaria apenas essa unica janela... nao instanciando outras copias da mesma....Como eu faria de um jeito prático esse bloqueio de uma segunda cópia da janela... tipo... uma funcao publica que checaria se a instacia da janela ja existe... e caso positivo ela ja focaria a janela ao inves de criar nova instancia.....Me ajudem.... por favor....ps: preciso da ajuda de vcs.... pois estou tendo poucas fontes para pesquisa... minhas atuais são: google, forum imasters, e forum web... por favor... me indiquem... bom... se ajudar...eu pretendo desenvolver em C#...Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

No meu vb6 eu abria uma unica instancia de uma janela... tipo ... cadastro de clientes....e assim o sistema usaria apenas essa unica janela... nao instanciando outras copias da mesma....

Só porque você queria fazer assim, porque também dá pra fazer do mesmo jeito.

Como eu faria de um jeito prático esse bloqueio de uma segunda cópia da janela... tipo... uma funcao publica que checaria se a instacia da janela ja existe... e caso positivo ela ja focaria a janela ao inves de criar nova instancia.....

Em C# você pode declarar o seu segundo form na classe (fora de um procedimento):
Form2 f2 = null;
E na hora que for chamar o form você pode fazer:
if (f2 == null)			{				f2 = new Form2();				f2.Show();			}			else				f2.Focus();
Em suma, se f2 for nulo (que é o seu valor inicial), ele cria um objeto Form2 e coloca nele e o mostra (Show). Já na segunda vez em diante em que o código for ser executado, f2 não vai ser mais nulo (porque da primeira vez nós colocamos um objeto nele), portanto ele só jogar o foco no form2 já aberto (Focus).No VB.NET, 2002 e 2003, o mesmo código acima é mais prático devido a existência de objetos estáticos dentro de procedimentos (não sei se existe isso em C#), portanto não existe a necessidade de declarar o form na classe, mas sim no procedimento:
Static f2 As Form2 = Nothing		If f2 Is Nothing Then			f2 = New Form2			f2.Show()		Else			f2.Focus()		End If
Já no caso do VB2005, vai ser igual ao modo que você mencionou do VB6.Certo? ;)Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.