JuNiNhO__ 0 Denunciar post Postado Maio 12, 2006 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
eriva_br 7 Denunciar post Postado Maio 12, 2006 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
brunocampos_ 3 Denunciar post Postado Maio 12, 2006 Procura sobre singleton. Vai te ajudar a desenvolver essa classe Compartilhar este post Link para o post Compartilhar em outros sites
JuNiNhO__ 0 Denunciar post Postado Maio 15, 2006 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
Graymalkin 0 Denunciar post Postado Maio 16, 2006 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 IfJá 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