none
Criar variavel, objeto globais(visiveis) em uma aplicação windows form RRS feed

  • Pergunta

  • Olá pessoal como estão????

     

    Bom pessoal estou com um problema que não consigo resolver...

     

    Crie uma aplicação em windows Forms. Nessse projeto tem vários formularios. Crie uma classe que possa armarzenar o cadastro desses formulários. Exemplo: tenho um form de cadastro de cliente e entao crie uma classe que possui um vector para armazenar todos os cadastros desse form. Ate ai tudo bem.

     

    O problema que possuo formularios de atualização e exclusão de clientes entao será necessário usaro objeto da classe que contém o vector. Lembrando que esse vector armazena os objetos de clientes do formulario cliente.

     

    Preciso que essa classe seja global, preciso que o objeto dessa classe que contem o vector seja global ou visivel a todos os meus formularios, para poder inserir, excluir e atualização os objetos contidos nela.

     

    Alguém por favor pode me ajudar??

     

    Obrigado a todos pela atenção. Abraços

    terça-feira, 26 de junho de 2007 15:52

Respostas

  • Olá Carlos, basta que você cria a instancia da classe que possui este vetor nos locais onde deseja acessar, e declare o vetor como publico.

     

    Exemplo

     

    Public Class Util // Exemplo de Classe que terá array

    {

            public string[] formNames ;

    }

     

    Public Class UsoUtil // Classe que precisa acessar a Classe Util

    {

           Util util = new Util;

           util.formName = new string[3]; //Defino que o vetor formNames terá 3 posições

          

          //Atribuindo valores

           util.formName[0] = "Teste1"

           util.formName[1] = "Teste2"

           util.formName[2] = "Teste3"

    }

     

    Agora, se o que você quer é que o valor armazenado neste vetor seja visível a qualquer uma das instancias desta classe voce deve declara-lo como static (ou shared em VB)

     

    ficaria:

     

    public static string[] formNames ;

     

    Muito cuidado no uso de campos e propriedades estáticas pois perde-se em encapsulamento, uma leitura que seria muito adequada é sobre orientação a objetos.

     

    Espero ter ajudado, qualquer coisa reply

     

    • Sugerido como Resposta Lucio Rogerio SPBanned terça-feira, 9 de junho de 2015 13:34
    • Marcado como Resposta Marcos SJ quinta-feira, 4 de fevereiro de 2016 19:22
    terça-feira, 26 de junho de 2007 16:08

Todas as Respostas

  • Pelo que entendi vc tem que declarar como public por exemplo:

    public string[] Campos .....

    terça-feira, 26 de junho de 2007 16:04
  • Olá Carlos, basta que você cria a instancia da classe que possui este vetor nos locais onde deseja acessar, e declare o vetor como publico.

     

    Exemplo

     

    Public Class Util // Exemplo de Classe que terá array

    {

            public string[] formNames ;

    }

     

    Public Class UsoUtil // Classe que precisa acessar a Classe Util

    {

           Util util = new Util;

           util.formName = new string[3]; //Defino que o vetor formNames terá 3 posições

          

          //Atribuindo valores

           util.formName[0] = "Teste1"

           util.formName[1] = "Teste2"

           util.formName[2] = "Teste3"

    }

     

    Agora, se o que você quer é que o valor armazenado neste vetor seja visível a qualquer uma das instancias desta classe voce deve declara-lo como static (ou shared em VB)

     

    ficaria:

     

    public static string[] formNames ;

     

    Muito cuidado no uso de campos e propriedades estáticas pois perde-se em encapsulamento, uma leitura que seria muito adequada é sobre orientação a objetos.

     

    Espero ter ajudado, qualquer coisa reply

     

    • Sugerido como Resposta Lucio Rogerio SPBanned terça-feira, 9 de junho de 2015 13:34
    • Marcado como Resposta Marcos SJ quinta-feira, 4 de fevereiro de 2016 19:22
    terça-feira, 26 de junho de 2007 16:08
  • Olá Marcus tudo bem? Então Marcus não era bem o que eu queria. Tenho uma classe que tem uma coleção que armazena os objetos da classe form cliente. Então gostaria de armazenar nessa coleção todos as pessoas cadastradas, ou seja cada posição dessa coleção terá uma pessoa com vários atributos. Com tenho forms que alteram, excluir e cadastra nessa classe de coleção então é necessario q seja visivel  e que os valores manipuladores la estejam a todos forms. Seria como se fosse estatico mas eu não posso declarar coleção como estatico. Exemplo: cadastrei a pessoa Carlos com varios atributos nessa classe que possui a coleção. Daí vou no form de exclusão e atualização o objeto Carlos tem que estar lá tb para que eu possa excluir ou altera-lo.

    Entedeu?
    Bom é isso espero que possa me ajudar. E muito obrigado por me ajudar. Abraços
    terça-feira, 26 de junho de 2007 22:33
  • Nao entendi muito bem, mas voce nao pode simplesmente acessar um banco de dados com estas informações quando necessário ?
    sábado, 7 de julho de 2007 13:44
  • Cara nao sei se       entendir        bem o que voce          estar        querendo

     

    Mais concordo com o marcus voce ja procurou usar orientacao a objetos no seu projeto e banco de dados acho que ficaria bem melhor.

     

    class Pessoa

    {

    int chvCad;

    string nome;

     

    public Pessoa()

    {

    }

     

    public Pessoa(int chvCad,string nome)

    {

    ChvCad = chvCad;

    Nome = nome;

    }

     

    #region Declaracao de Propriedades

     

    public int ChvCad

    {

    get { return this.chvCad;}

    set { this.chvCad = value;}

    }

     

    public string Nome

    {

    get {return this.nome;}

    set {this.nome = value}

    }

    #endregion
      }

     

    dai quando voce fosse querer chamar o cliente ou passar alguma ateraçao voce faria voce faria

     

    //Novo cliente

    Pessoa pessoa = new Pessoa(1,"Joao");

     

    //Para pegar um cliente

    //voce teria que fazer uma rotina de acesso ao banco recuperando o cliente.

     

    lblChvCad.text = pessoa.ChvCad;

    lblNomeCliente.text = pessoa.Nome;

     

    nao se esqueca que c# é case sensitive entao maiscula é diferente de minuscula.

     

    Espero ter ajudado.

     

     

     


    • Editado Marcos SJ quinta-feira, 4 de fevereiro de 2016 19:22 Edição
    domingo, 8 de julho de 2007 11:09