2
respostas

SelectedIndex

Entendi que ao adicionar itens no ComboBox o mesmo cria índices para cada item adicionado, no caso do exercício os índices criados tem o mesmo índice do array, mas isso se deve ao fato de usarmos o foreach para adicionar os itens no ComboBox fazendo assim com que os itens esteja na mesma ordem do array portanto ficando com o mesmo valor ou o método possui alguma inteligência para aplicar o índice certo para o item, por exemplo se eu fizer a adição dos itens a ordem inversa do maior para o menor o campo vai funcionar normalmente?

2 respostas

Olá Iran!

Ele aplica o índice na ordem que você adicionar: o primeiro a ser adicionado terá o indice 0, depois 1, depois 2 e assim por diante. Independente de usar foreach ou algum outro laço para adicionar, ele sempre coloca na ordem de adição :)

Não existe lógica embutida, caso você não tenha como identificar qual a ordenação utilizada, o que poderia fazer é adicionar uma busca para descobrir qual o índice deve utilizar.

Algo nesse esquema:

            int posicao = 0;
            string[] textosAleatorios;
            string[] textosCombo;
            textosAleatorios = new string[3];
            textosAleatorios[0] = "joao";
            textosAleatorios[1] = "pedro";
            textosAleatorios[2] = "Victor";

            comboContas.Items.Add(textosAleatorios[2]);
            comboContas.Items.Add(textosAleatorios[0]);
            comboContas.Items.Add(textosAleatorios[1]);
            textosCombo = new string[comboContas.Items.Count];

            for (int i = 0; i < comboContas.Items.Count; i++)
            {
                textosCombo[i] = comboContas.Items[i].ToString();
            }

            MessageBox.Show(textosCombo[comboContas.SelectedIndex]);

            posicao = Array.BinarySearch(textosAleatorios, textosCombo[comboContas.SelectedIndex]);

            if (posicao >= 0 && posicao <= 2)
            {
                MessageBox.Show(textosAleatorios[posicao]);
            }else
            {
                MessageBox.Show("Não encontrou na posição: " + posicao );
            }

Observação: Esse código já é mais avançado pois trabalha com outras classes e funções não abordadas no curso até o momento.