Início > C# > Indexadores C# – Parte 2

Indexadores C# – Parte 2

Continuação do post anterior….

 

Agora já terminamos de fazer  nosso código, a classe Agenda deverá ficar da seguinte maneira:

class Agenda

{

  private int tamanhoAtualIndice;

  private Nome[] nomes;

  private NumeroTelefones[] telefones;

 

  //Definindo o Construtor da Classe Agenda

  public Agenda()

  {

      this.tamanhoAtualIndice = 0;

      this.nomes = new Nome[0];

      this.telefones = new NumeroTelefones[0];

      }

           

      public void Add(Nome nome, NumeroTelefones numero)

      {

            aumentarArrays();

            this.nomes[tamanhoAtualIndice] = nome;

            this.telefones[tamanhoAtualIndice] = numero;

            this.tamanhoAtualIndice++;

      }

        public Nome this[NumeroTelefones numero]

        {

            get

            {

                int i = Array.IndexOf(this.telefones, numero);

                if (i != -1)

                    return this.nomes[i];

                else

                    return new Nome();

            }

        }

 

        public NumeroTelefones this[Nome nome]

        {

            get

            {

                int i = Array.IndexOf(this.nomes, nome);

                if (i != -1)

                    return this.telefones[i];

                else

                    return new NumeroTelefones();

            }

        }

 

            private void aumentarArrays()

            {

                  if (this.tamanhoAtualIndice == this.nomes.Length)

                  {

                        int aumentarIndice = tamanhoAtualIndice + 16;

                       

                        Nome[] maisNomes = new Nome[aumentarIndice];

                        this.nomes.CopyTo(maisNomes, 0);

                       

                        NumeroTelefones[] maisTelefones = new NumeroTelefones[aumentarIndice];

                        this.telefones.CopyTo(maisTelefones, 0);

                                  

                        this.nomes = maisNomes;

                        this.telefones = maisTelefones;

                  }

            }

 

 

      }

 

Finalizamos nosso código iremos criar um pequeno formulário para efetuar os testes.

 

 

 

1-) Abra o arquivo Windows1.xaml e insira os controles abaixo:

Controle

Propriedades

Observação

TextBox

– Altere a propriedade ID do controle para “nomeTextBox”;

É importante sempre que inserir um controle na pagina um nome simples e objetivo para que o mesmo possa ser localizado facilmente no código.

TextBox

– Altere a propriedade ID do controle para “telefoneTextBox”;

 

Button

– Altere a propriedade ID do controle para “addButton”;

Este será o botão responsável por disparar o evento que irá adicionar os valores das texbox dentro da array.

Button

– Altere a propriedade ID do controle para “pesqTelefoneTextBox”;

Este será o botão responsável por disparar o evento que irá efetuar as pesquisas por telefone.

Button

– Altere a propriedade ID do controle para “pesqNomeTextBox”;

Este será o botão responsável por disparar o evento que irá efetuar as pesquisas por nome.

 

Alinhe os controles conforme a imagem abaixo:

Dê um duplo clique em cima do botão Add, o Visual Studio irá criar o evento Click do botão automaticamente, dentro deste evento insira o código abaixo:

private Agenda agenda = new Agenda();

private void addClick(object sender, RoutedEventArgs e)

{

   if (!String.IsNullOrEmpty(name.Text) && !String.IsNullOrEmpty(phoneNumber.Text))

   {

       agenda.Add(new Nome(nomeTextBox.Text),

                              new NumeroTelefones(telefoneTextBox.Text));

                nomeTextBox.Text = "";

                telefoneTextBox.Text = "";

     }

}

 

Faça o mesmo processo com pesqTelefoneButton;

private void pesqTelefoneButtonClick(object sender, RoutedEventArgs e)

{

   string text = telefoneTextBox.Text;

   if (!String.IsNullOrEmpty(text))

   {

       nomeTextBox.Text = agenda[new NumeroTelefones(text)].Texto;

   }

}

 

Dê um clique duplo em cima do botão pesqNomeButton, e insira o código abaixo:

private void pesqNomeButtonClick(object sender, RoutedEventArgs e)

{

   string text = nomeTextBox.Text;

   if (!String.IsNullOrEmpty(text))

   {

      telefoneTextBox.Text = agenda[new Nome(text)].Text;

   }

}

 

Já podemos efetuar os testes, compile a aplicação e veja se a mesma irá ocorrer erros, caso não ocorra nenhum erro, execute a aplicação e efetue os seguintes testes:

1-) Digite um nome e um telefone e clique em adicionar;

2-) Vá na textBox do Nome e digite o nome que você acabou de adicionar e clique em pesquisar Nome, você verá que o textBox do telefone irá preencher automaticamente.

 

Por enquanto é isso, nos vemos na próxima, abraço.

 

Mais informações sobre indexadores:

http://msdn.microsoft.com/pt-br/library/6x16t2tx.aspx

http://www.csharphelp.com/archives/archive140.html

 

Categorias:C#
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: