Динамически обновлять метки - PullRequest
0 голосов
/ 11 мая 2018

Как я могу динамически обновлять текст меток в форме, чтобы их текст был пронумерован по порядку от 1 до 25?

В псевдокоде что-то вроде этого:

for (int i = 1; i <= 25; i++) {
    label + 'i'.Text = "i";
}

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Получение членов класса динамически требует рефлексии.Нечто подобное должно делать то, что вы хотите.Вам нужно будет настроить его в зависимости от того, как объявлены поля.

for (int i = 0; i < 8; i++)
{
    var property = this.GetType().GetProperty("label" + i);
    var label = (Label)property.GetValue(this);
    label.Text = "Label " + i;
}
0 голосов
/ 11 мая 2018

Я бы сделал так (проверено):

foreach (var label in Controls.OfType<Label>())
{
    label.Text = label.Name.Replace("label", "");
}

Поскольку вам не нужно заполнять весь текст метки по порядку, вы можете просто просмотреть их и заменить текст «метки».Предположения те, что вы сделали, т.е. все метки названы «label1», «label2» и т. Д., Плюс тот факт, что все метки находятся внутри общего элемента управления (панели) или самого окна, что я и сделал.


РЕДАКТИРОВАТЬ: ДОПОЛНИТЕЛЬНЫЕ ИДЕИ

Решение, приведенное выше, работает, но, чтобы сделать вещи более интересными, вы можете добавить метод для предотвращения обращения с метками, которые не уважают вашусоглашение о присвоении имен (т. е. «метка» с последующим номером):

foreach (var label in Controls.OfType<Label>())
{
    if (RespectsNamingConvention(label.Name))
    {
        label.Text = label.Name.Replace("label", "");
    }
}

, где у вас есть

private bool RespectsNamingConvention(string name)
{
    var Suffix = name.Replace("label", "");
    return 
        name.StartsWith("label") &&
        Suffix.Count() > 0 &&
        Suffix.Where(e => !Char.IsDigit(e)).Count() == 0;
}

, т.е. вы проверяете, начинается ли название вашей метки с «метки», затем следуетчто-то, что содержит только цифры.

Еще одним улучшением может стать получение всех меток в вашем окне, даже если они не находятся в одном элементе управления.

Что можно сделать, как показано в этом вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...