#c# #.net #winforms
#c# #.net #winforms
Вопрос:
У меня есть форма с некоторыми метками на ней. Время от времени программа изменяет текст на ярлыках с помощью
label1.Text = "some message"
Я хочу создать функцию, которая выполняется каждый раз, когда назначается текст ярлыка, и реализовать обработчик событий, подобный этому:
this.label1.TextChanged = new System.EventHandler(this.label1_TextChanged);
[...]
private void label1_TextChanged(object sender, EventArgs e) {
// do some stuff
}
Это работает нормально, пока текст действительно изменен. Но если тексту присвоено то же значение, которое он уже имеет, событие не выполняется. Есть ли простой способ подключить функцию к текстовому назначению без изменения каждого вхождения label1.Text = ...
в вызов пользовательской функции?
Ответ №1:
Свойство Text элемента управления является виртуальным, поэтому вы можете создать свой собственный элемент управления label и добавить в него пользовательские функции, такие как инициирование события при вызове параметра свойства, даже если это не приводит к изменению текста.
Ответ №2:
Задайте текст ярлыка через свойство каждый раз, когда программа устанавливает его значение, она будет вызывать ту функцию, которую вы определите в свойстве.
Нравится
public string LabelText
{
set
{
label1.Text = value;
// your Function Calling
}
}
Комментарии:
1. Для этого потребовалось бы переписать каждый экземпляр text assignment, чего я хотел избежать. решение dkackman работает для меня лучше всего, поскольку я могу оставить исходную форму нетронутой, за исключением повторного объявления метки как myLabel