Вопрос по Windows form Visual Studio. Язык c

Создал поле Label, хочу создать метод, который будет менять все Label на форме. Метод создал свой в отдельном классе но общем пакете. Но в этом методе компилятор не видет Label, даже если я явно указываю на класс Form1. Но при этом он его хорошо видит в реализации - private void…(object sender, EventArgs e). Но мне сейчас не нужна реализация, я хочу без нее создать метод влияющий на Label. Подскажите как это сделать. Спасибо.

Какая-то каша получается.
Для начала: форма это потомок компонента Control, как и любой другой визуальный компонент. Каждый Control работает как контейнер для дочерних объектов, которые перечисляются в Controls. Соотв. Вам надо написать метод для работы с Control. Так будет универсально. Вы не завязываетесь на свой класс формы, и можете менять значения хоть в форме, хоть в отдельном компоненте н-р GroupBox с _дочерними_ Label _внутри_ него.

Что-то вроде:
void SetAllLabelCaption(Control ctrl, string Text) {
foreach(var subc in ctrl.Controls) {
var lbl = subc as Label;
if (lbl!= null) lbl.Text = Text;
}
}

И соотв. Вызывать его SetAllLabelText(экземпляр_формы, "текст");

Есс-но у каждого Control в Controls могут быть свои дочерние элементы. Ну тут смотрите сами - нужен Вам ещё такой обход или нет.

P.S: Код проверил - он рабочий Про операторы? И? Грузить не стал.
P.P.S: Как это работает - "видео" в первом комменте.

Добавить комментарий