Создайте собственный пользовательский элемент управления для отображаемых панелей, содержащий все элементы управления из нужного набора инструментов.
public partial class MyControl : UserControl
{
...
}
В «MyControl» вы определяете события для всех вещей, которые могут произойти и должны обрабатываться извне элемента управления. Такой же как например «SelectedIndexChanged» для выпадающего списка.
Ваш класс управления будет выглядеть так:
public partial class MyControl : UserControl
{
public event EventHandler<MyImportantEventA> OnImportantThingHappend;
//Event-Invoker
protected virtual void OnOnImportantThingHappend(MyImportantEventA e)
{
OnImportantThingHappend?.Invoke(this, e);
}
}
//Data of your event. Customize as you like/need.
public class MyImportantEventA : EventArgs
{
public string Message { get; set; }
}
Когда вы добавляете свой элемент управления динамически, привязывайте к событию (ям) вашего элемента управления:
myUserControl.OnImportantThingHappend += DoSomethingWithEvent;
Вещи, с которыми элемент управления может справиться самостоятельно, не нужно показывать как события.
E.g.:
«Закрыть» может быть чем-то, что должно обрабатываться извне. Вам нужно удалить элемент управления, изменить расположение элементов управления и т. Д.
«Показать детали», вероятно, является чем-то, что может быть обработано полностью внутри вашего контроля. Ваш элемент управления отображает окно сообщения или необычную подсказку.