Отследить смену свойства Tag у контрола
От: Nogard Россия  
Дата: 11.12.08 18:04
Оценка:
Доброе время суток, товарищи!

Столкнулся тут с проблемой — необходимо автоматически реагировать на смену свойства Tag у некоторого контрола (туда записывается некоторый объект). Так как контрол не содержит события TagChanged, пришлось что-то придумывать...

Решил использовать механизм DataBinding: связать свойство Tag контрола с каким-то промежуточным объектом, с единственным свойством
object Value;

в сеттере которого можно было бы сделать какие-либо действия...

Написал небольшой класс TagChangedDetector:
    public class TagChangedDetector {
        private object value;

        public object Value {
            get {
                return value;
            }
            set {
                if(this.value!=value) {
                    this.value = value;
                    MessageBox.Show("Changed");
                }
            }
        }
    }


Затем добавил биндинг:
  TagChangedDetector tcd = new TagChangedDetector();
  edit.DataBindings.Add("Tag", tcd, "Value",false,DataSourceUpdateMode.OnPropertyChanged,null);


Запустил, сменил тег у контрола — ноль реакции... Передал фокус контролу, потом другому — и тут выскочил MessageBox!
В общем, путем экспериментов было выяснено, что если не делать лишних телодвижений по передаче-смене фокуса у этого контрола — смена Tag никак не детектируется

Подскажите пожалуйста правильный способ реализации моей задачи или укажите на неточности в моем коде!
tag binding
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.