Я создал элемент управления WinForms, который наследуется от System.Windows.Forms.UserControl ... У меня есть несколько настраиваемых событий в элементе управления, которые я хотел бы, чтобы потребитель моего элемента мог видеть. Я не могу заставить мои события отображаться на вкладке «События» окна «Свойства» во время разработки. Это означает, что единственный способ назначить события - это программно написать
myUserControl.MyCustomEvent += new MyUserControl.MyCustomEventHandler(EventHandlerFunction);
это нормально для меня, я думаю, но когда кто-то другой придет использовать мой UserControl, он не узнает, что эти события существуют (если они не прочитают библиотечный документ ... да, верно). Я знаю, что событие будет отображаться с помощью Intellisense, но было бы здорово, если бы оно отображалось и в окне свойств.





Убедитесь, что ваши мероприятия открыты для публики. Например...
[Browsable(true)]
public event EventHandler MyCustomEvent;
Ага, убедитесь, что определение обработчика событий всегда объявляется как общедоступное, иначе оно не будет видно.
Я также только что изменил его с моего пользовательского типа обработчика событий на простой EventHandler, и он по-прежнему не отображается на вкладке «События» в окне свойств.
Я обновил ответ, чтобы показать дополнительный атрибут браузера, который вы можете попробовать
Решение с использованием делегата. Например, я использовал пользовательский ListView, который обрабатывает событие добавления элемента: Объявите своего делегата:
public delegate void ItemAddedHandler(object sender, ItemEventArgs e)
затем объявите событие, которое использует делегат:
[Browsable(true)]
public event ItemAddedHandler ItemAdded;
Примечание. ItemEventArgs - это настраиваемый EventArgs.
Надеюсь, что могу помочь, у меня отлично работает
Это общедоступный пользовательский обработчик событий, а тип обработчика событий - это общедоступный делегат ... нет ничего функционально неправильного ... события работают и запускаются правильно, это чисто проблема времени разработки.