Как использовать значение массива для переключения регистра (не номер массива) - PullRequest
7 голосов
/ 27 января 2010

Как вы используете VALUE номера массива, в отличие от того, какое число в массиве используется для определения регистра? В моем коде:

for (int x = 0; x < 3; x++)
        {
            switch (position[x])
            {
                case 0:
                    label1.Text = people[x];
                    break;
                case 1:
                    label2.Text = people[x];
                    break;
                case 2:
                    label3.Text = people[x];
                    break;
            }
        }

При запуске он использует x в позиции [], а не в позиции [x], чтобы определить, какой регистр использовать. Например, когда x равен 0, но значение position [x] равно 1, он использует регистр 0. Как получить значение вместо?

РЕДАКТИРОВАТЬ: Мой код действительно был проблемой .... По какой-то причине отладка рано утром приводит к созданию ложных изображений ...: P Как FYI, здесь был правильный код ...

for (int x = 0; x < 3; x++)
        {
            if (position[x] == 2)
            {
                position[x] = 0;
            }

            else
            position[x]++;

        }

        for (int x = 0; x < 3; x++)
        {
            int val = position[x];
            switch (val)
            {
                case 0:
                    label1.Text = people[x];
                    break;
                case 1:
                    label2.Text = people[x];
                    break;
                case 2:
                    label3.Text = people[x];
                    break;
            }

В верхнем первом появлении позиции [x] я вместо этого поместил только x. Спасибо за помощь!

1 Ответ

3 голосов
/ 27 января 2010

Попробуйте это:

    for (int x = 0; x < 3; x++)
    {
        int val = position[x];
        switch (val)
        {
            case 0:
                label1.Text = people[x];
                break;
            case 1:
                label2.Text = people[x];
                break;
            case 2:
                label3.Text = people[x];
                break;
        }
    }

Может быть, что-то проще сказать:

for(int x = 0; x < 3; x++)
{
    Label label = MyForm.ActiveForm.Controls["label" + position[x]] as Label;
    if (label != null) label.Text = people[x];
}
...