Пользовательские события в пользовательском элементе управления с привязкой к данным не запускаются в элементе управления DataRepeater. При отладке я обнаружил, что элемент управления DataRepeater воссоздает элемент управления с помощью Activator.CreateInstance и копирует свойства и события. В моем случае копирование событий не копирует пользовательские события, которые я подключил.
Например
открытый класс MyClass: Control
{
публичное событие EventHandler MyEvent;
защищенная виртуальная пустота OnMyEvent ()
{
if (this.MyEvent! = null)
{
this.MyEvent (это, EventArgs.Empty);
}
}
private int selectedIndex = -1;
public int SelectedIndex
{
получить
{
вернуть this.selectedIndex;
}
задавать
{
if (this.selectedIndex! = значение)
{
this.selectedIndex = значение;
this.OnMyEvent ();
}
}
}
//
// DataBinding работает здесь
//
}
публичный Form1 ()
{
InitialiseComponent ();
ArrayList list = new ArrayList ();
list.Add ( "один");
this.dataRepeater1.DataSource = list; // один повторитель
MyClass test = new Myclass ();
test.DataSource = GetDataTable ();
this.dataRepeater1.ItemTemplate.Controls.Add (тест);
test.MyEvent + = новый EventHandler (test_MyEvent);
}
// Это событие должно сработать, когда выбранный индекс Datatable изменяется, и запускается, когда помещается непосредственно в форму, и не срабатывает, когда помещается в элемент управления DataRepeater ///////////////// //////
private void test_MyEvent (отправитель объекта, EventArgss e)
{
// Это событие не состоялось ///////////////////////
}
private DataTable GetDataTable ()
{
..// Создать таблицу данных и вернуть
}
Любая помощь приветствуется.
Спасибо