Я бы сделал так (проверено):
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;
}
, т.е. вы проверяете, начинается ли название вашей метки с «метки», затем следуетчто-то, что содержит только цифры.
Еще одним улучшением может стать получение всех меток в вашем окне, даже если они не находятся в одном элементе управления.
Что можно сделать, как показано в этом вопрос .