none
Dúvida (Mudança de valores em array) RRS feed

  • Pergunta

  • Bom, eu estou aprendendo sobre array. Vamos supor uma coisa:

    Eu crio um array de string com 5 posições. Inicializo todas elas no form load e também atribuio a propriedade text do label como sendo o index 0 desse array. até aí tranquilo demais. Mas eu gostaria de fazer o seguinte:

    Quando o usuario clicar no button1 os valores desse array tera que mudar de acordo com que ele clica. Por exemplo:

    toda vez que ele clicar o texto do label tera que mudar para o index 1, 2, 3 enfim, pois eu carreguei o texto no form load como sendo 0. Como farei isto?

    segunda-feira, 30 de maio de 2011 19:48

Respostas

  • Flavio, de uma forma bem simples, seria assim:

    string[] ss;
    int contador = 0;
    private void Form1_Load(object sender, EventArgs e)
    {
       ss = new string[] { "abc", "def", "ghi" };
       textBox1.Text = ss[contador];
    }
    
    private void textBox1_Click(object sender, EventArgs e)
    {
       textBox1.Text = ss[++contador];
    }
    


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    • Sugerido como Resposta Eduardo Cury segunda-feira, 30 de maio de 2011 21:48
    • Marcado como Resposta Flavio Fonseca segunda-feira, 30 de maio de 2011 21:57
    segunda-feira, 30 de maio de 2011 21:36
  •   string[] files;
      int count = Directory.GetFiles(@"C:\Windows", "*.bmp").Count();
    
      public Form1()
      {
       InitializeComponent();
      }
    
      private void button1_Click(object sender, EventArgs e)
      {
       files = Directory.GetFiles(@"C:\Windows", "*.bmp");
       pictureBox1.Load(files[count++]);
      }
    
    Faça a contagem do arquivos e coloque na variavel

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    • Marcado como Resposta Flavio Fonseca segunda-feira, 30 de maio de 2011 22:20
    segunda-feira, 30 de maio de 2011 22:18
  • Flavio a minha ultima resposta continua errada, na verdade você deve fazer isso aqui.

    string[] files;
    int count = 0;
    
    public Form1()
    {
    	InitializeComponent();
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
    	files = Directory.GetFiles(@"C:\Windows", "*.bmp");
    	pictureBox1.Load(files[++count]);
    	if ( count == Directory.GetFiles(@"C:\Windows", "*.bmp").Count()-1 ) { count = 0; }
    }
    
    


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    • Marcado como Resposta Flavio Fonseca segunda-feira, 30 de maio de 2011 22:40
    segunda-feira, 30 de maio de 2011 22:30
  • Agora esta ideal, como eu realmente queria..  Eu tirei o -1 neste bloco if ( count == Directory.GetFiles(@"C:\Windows", "*.bmp").Count()-1)

    Pois senão ele quando chegar na figura 12 ele volta para a primeira e come a ultima. Eu tirei o -1 em função disso e agora esta normal e sem bugs.

    • Marcado como Resposta Flavio Fonseca segunda-feira, 30 de maio de 2011 23:21
    segunda-feira, 30 de maio de 2011 23:21

Todas as Respostas

  • Flavio, de uma forma bem simples, seria assim:

    string[] ss;
    int contador = 0;
    private void Form1_Load(object sender, EventArgs e)
    {
       ss = new string[] { "abc", "def", "ghi" };
       textBox1.Text = ss[contador];
    }
    
    private void textBox1_Click(object sender, EventArgs e)
    {
       textBox1.Text = ss[++contador];
    }
    


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    • Sugerido como Resposta Eduardo Cury segunda-feira, 30 de maio de 2011 21:48
    • Marcado como Resposta Flavio Fonseca segunda-feira, 30 de maio de 2011 21:57
    segunda-feira, 30 de maio de 2011 21:36
  • Muito obrigado, deu certo como eu esperava! Mas quando chega no ultima posição da string, dá erro de run-time... Como faço para que quando chegar ao final, ele volta para o primeiro?
    segunda-feira, 30 de maio de 2011 21:57
  • Flavio, tente assim:

    private void textBox1_Click(object sender, EventArgs e)
    {
       textBox1.Text = ss[++contador];
       if contador == 2 { contador = -1; }
    }


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    • Editado Luiz Estevam segunda-feira, 30 de maio de 2011 22:02 Alteração de código
    segunda-feira, 30 de maio de 2011 22:00
  • Vou postar meu codigo para você ver!
        string[] files;
        int count = 0;
    
        public Form1()
        {
          InitializeComponent();
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
          files = Directory.GetFiles(@"C:\Windows", "*.bmp");
          pictureBox1.Load(files[count++]);
        }
    
    Neste caso são 13 arquivos que tem neste diretório, mas como eu faço se o diretorio tiver menos ou mais, se não der para saber quantos arquivos tem...
    segunda-feira, 30 de maio de 2011 22:11
  •   string[] files;
      int count = Directory.GetFiles(@"C:\Windows", "*.bmp").Count();
    
      public Form1()
      {
       InitializeComponent();
      }
    
      private void button1_Click(object sender, EventArgs e)
      {
       files = Directory.GetFiles(@"C:\Windows", "*.bmp");
       pictureBox1.Load(files[count++]);
      }
    
    Faça a contagem do arquivos e coloque na variavel

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    • Marcado como Resposta Flavio Fonseca segunda-feira, 30 de maio de 2011 22:20
    segunda-feira, 30 de maio de 2011 22:18
  • Muito obrigado por sua ajuda.. Que Deus te abençoe.

    segunda-feira, 30 de maio de 2011 22:20
  • Tentei mudar a variavel count como sugeriu, mas dei erro em tempo de execução...

    O programa estoura

    segunda-feira, 30 de maio de 2011 22:25
  • Flavio, desculpe faça assim:

    int count = Directory.GetFiles(@"C:\Windows", "*.bmp").Count()-1;

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    segunda-feira, 30 de maio de 2011 22:27
  • Flavio a minha ultima resposta continua errada, na verdade você deve fazer isso aqui.

    string[] files;
    int count = 0;
    
    public Form1()
    {
    	InitializeComponent();
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
    	files = Directory.GetFiles(@"C:\Windows", "*.bmp");
    	pictureBox1.Load(files[++count]);
    	if ( count == Directory.GetFiles(@"C:\Windows", "*.bmp").Count()-1 ) { count = 0; }
    }
    
    


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    • Marcado como Resposta Flavio Fonseca segunda-feira, 30 de maio de 2011 22:40
    segunda-feira, 30 de maio de 2011 22:30
  • Agora esta ideal, como eu realmente queria..  Eu tirei o -1 neste bloco if ( count == Directory.GetFiles(@"C:\Windows", "*.bmp").Count()-1)

    Pois senão ele quando chegar na figura 12 ele volta para a primeira e come a ultima. Eu tirei o -1 em função disso e agora esta normal e sem bugs.

    • Marcado como Resposta Flavio Fonseca segunda-feira, 30 de maio de 2011 23:21
    segunda-feira, 30 de maio de 2011 23:21