Я добавил EventHandler для события Click в picturebox, но во время выполнения этот обработчик никогда не вызывается (отладчик показывает мне, что он добавлен в элемент управления напрямую, но когда я нажимаю на picturebox, ничего не происходит). *
Я полагаю, это как-то связано с моим наследством. У меня есть usercontrol, называемый AbstractPage (он не совсем абстрактный, так как дизайнеру это не нравится), который состоит только из заголовка и этого графического окна, но он предоставляет довольно много функций, на которые опираются реальные страницы.
#region Constructor
public AbstractPage()
{
InitializeComponent();
lblHeading.Text = PageName;
picLock.Click += new EventHandler(picLock_Click);
}
#endregion
#region Events
void picLock_Click(object sender, EventArgs e)
{
...do some stuff
}
#endregion
Реализации страниц просто наследуют этот класс и добавляют свои элементы управления и поведение. Недавно мы выяснили, что создание подклассов UserControl не является производительным, и мы теряем некоторую производительность там, но это лучший способ сделать это (я не хочу, чтобы c & p работала на 25 страницах и поддерживала их).
Моя страница выглядит так
public partial class PageA : AbstractPage
{
#region Constructor
public PageA()
{
// I dont call the base explicitely since it is the
// standard constructor and this always calls the base
InitializeComponent();
}
#endregion
public override string PageName
{
get { return "A"; }
}
public override void BindData(BindingSource dataToBind)
{
...
}
Так или иначе, picLock_Click никогда не вызывается, и я не знаю почему?
Все страницы помещаются в PageControl, который состоит из TreeView и TabContainer, куда страницы помещаются после вызова addPage (IPage)
public partial class PageControl {
...
protected virtual void AddPages()
{
AddPage(new PageA());
AddPage(new PageD());
AddPage(new PageC());
...
}
protected void AddPage(IPage page)
{
put pagename to treeview and enable selection handling
add page to the tabcontainer
}
Заранее спасибо