INSTANCIAR UM OBJETO DE UMA CLASSE PARA TODOS FORM
Boa noite.
Estou com uma duvida basica aqui, é o seguinte:
Tenho uma classe e quero instanciar um objeto dessa classe no form principal e usa-lo nos outros forms que tenho no meu projeto.
Como posso fazer isso?
Valeu!
Estou com uma duvida basica aqui, é o seguinte:
Tenho uma classe e quero instanciar um objeto dessa classe no form principal e usa-lo nos outros forms que tenho no meu projeto.
Como posso fazer isso?
Valeu!
Voce pode resolver o problema de varias maneiras...
a) Criar uma superclasse que herde Form e fazer os formularios serem na verdade instancias desta classe e ela por sua vez ter a property da classe customizada que voce citou
b) Criar a propriedade em todos os forms e ir compartilhando a medida que voce os constroi
c) Criar uma classe estatica (no vb a keyword shared) para a aplicacao
Private NotInheritable Class Globals Inherits Object Private Shared Sub New()
Public Shared MinhaString As String
End Class
Vale a pena ua visita neste link:
http://social.msdn.microsoft.com/Forums/en-US/vblanguage/thread/aa2427e3-a57f-4c38-adb9-0496d7e3eb9a
a) Criar uma superclasse que herde Form e fazer os formularios serem na verdade instancias desta classe e ela por sua vez ter a property da classe customizada que voce citou
b) Criar a propriedade em todos os forms e ir compartilhando a medida que voce os constroi
c) Criar uma classe estatica (no vb a keyword shared) para a aplicacao
Private NotInheritable Class Globals Inherits Object Private Shared Sub New()
Public Shared MinhaString As String
End Class
Vale a pena ua visita neste link:
http://social.msdn.microsoft.com/Forums/en-US/vblanguage/thread/aa2427e3-a57f-4c38-adb9-0496d7e3eb9a
Eu concordo com o webMaster, mas a melhor prática nesse caso seria criar uma Superclasse e fazer todos os seus Forms herdarem ela.
uma bom solução é criar module
dentro desse module vc instancia a class
ai essa instancia ficara disponivel para todo o projeto a assim evitando o ripetir de instaciar a class para outros forms
entendo?
[S96]
dentro desse module vc instancia a class
ai essa instancia ficara disponivel para todo o projeto a assim evitando o ripetir de instaciar a class para outros forms
entendo?
[S96]
SE VC USAR CORRETAMENTE ORIENTACAO A OBJETOS, VOCE PODE FAZER OCMO O WEBMASTER DISSE...
UMA SUPERCLASSE QUE HERDA DE WINDOWS.FORMS E OS SEUS FORMS HERDAREM DELA OS ATRIBUTOS...
NO METODO CONSTRUTOR VC PODE PASSAR O VALOR QUE VC QUER PRA QUALQUER FORM..
UMA SUPERCLASSE QUE HERDA DE WINDOWS.FORMS E OS SEUS FORMS HERDAREM DELA OS ATRIBUTOS...
NO METODO CONSTRUTOR VC PODE PASSAR O VALOR QUE VC QUER PRA QUALQUER FORM..
cara.. vamos lá... tive que fazer algo semelhante para que não permitisse abrir duas telas de cadastro ao mesmo tempo, por exemplo.
primeiro crie suas janelas e depois, dentro da janela principal (do fonte) defina objetos públicos e estáticos do tipo de cada janela que tu queiras abrir.
Quando tu clicares sobre o botão que abrirá aquela janela instancie uma nova janela dentro daquela variável pública e estática, quando aquela janela se fechar, esta anulará a mesma... mais ou menos assim
<code>
// Janela principal:
public static frm_cadastro_cliente fcc;
public void form_load()
{
fcc = null; // na verdade não precisa disto, pois o .NET já faz isso automaticamente
}
public void btn_abre_cadastro_cliente (object sender, EventArgs e)
{
if (fcc.Equals(null)
{
fcc = new frm_cadastro_cliente();
}
else
{
MessageBox.Show([Ô]Esta janela já está aberta[Ô]);
}
}
// agora no método formClosing do frm_cadastro_cliente
janelaPrincipal.fcc = null;
</code>
desta forma tu poderás acessar qualquer coisa... ou não...
Na verdade eu não soube me expressar nem sei se entendi direito teu problema. Mas deixo ai uma contribuição que espero que ajude.
Abraço
primeiro crie suas janelas e depois, dentro da janela principal (do fonte) defina objetos públicos e estáticos do tipo de cada janela que tu queiras abrir.
Quando tu clicares sobre o botão que abrirá aquela janela instancie uma nova janela dentro daquela variável pública e estática, quando aquela janela se fechar, esta anulará a mesma... mais ou menos assim
<code>
// Janela principal:
public static frm_cadastro_cliente fcc;
public void form_load()
{
fcc = null; // na verdade não precisa disto, pois o .NET já faz isso automaticamente
}
public void btn_abre_cadastro_cliente (object sender, EventArgs e)
{
if (fcc.Equals(null)
{
fcc = new frm_cadastro_cliente();
}
else
{
MessageBox.Show([Ô]Esta janela já está aberta[Ô]);
}
}
// agora no método formClosing do frm_cadastro_cliente
janelaPrincipal.fcc = null;
</code>
desta forma tu poderás acessar qualquer coisa... ou não...
Na verdade eu não soube me expressar nem sei se entendi direito teu problema. Mas deixo ai uma contribuição que espero que ajude.
Abraço
Tópico encerrado, já que foram postadas soluções e o usuário não retornou para encerrar o mesmo.
Tópico encerrado , respostas não são mais permitidas