Обнаружение изменений в ярлыке

#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