Просмотр во время разработки для событий пользовательского элемента управления

Я создал элемент управления WinForms, который наследуется от System.Windows.Forms.UserControl ... У меня есть несколько настраиваемых событий в элементе управления, которые я хотел бы, чтобы потребитель моего элемента мог видеть. Я не могу заставить мои события отображаться на вкладке «События» окна «Свойства» во время разработки. Это означает, что единственный способ назначить события - это программно написать

myUserControl.MyCustomEvent += new MyUserControl.MyCustomEventHandler(EventHandlerFunction);

это нормально для меня, я думаю, но когда кто-то другой придет использовать мой UserControl, он не узнает, что эти события существуют (если они не прочитают библиотечный документ ... да, верно). Я знаю, что событие будет отображаться с помощью Intellisense, но было бы здорово, если бы оно отображалось и в окне свойств.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
0
9 829
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Убедитесь, что ваши мероприятия открыты для публики. Например...

[Browsable(true)]
public event EventHandler MyCustomEvent;

Это общедоступный пользовательский обработчик событий, а тип обработчика событий - это общедоступный делегат ... нет ничего функционально неправильного ... события работают и запускаются правильно, это чисто проблема времени разработки.

Michael Prewecki 27.09.2008 06:54

Ага, убедитесь, что определение обработчика событий всегда объявляется как общедоступное, иначе оно не будет видно.

Phil Wright 27.09.2008 06:56

Я также только что изменил его с моего пользовательского типа обработчика событий на простой EventHandler, и он по-прежнему не отображается на вкладке «События» в окне свойств.

Michael Prewecki 27.09.2008 06:58

Я обновил ответ, чтобы показать дополнительный атрибут браузера, который вы можете попробовать

Phil Wright 27.09.2008 06:59

Решение с использованием делегата. Например, я использовал пользовательский ListView, который обрабатывает событие добавления элемента: Объявите своего делегата:

   public delegate void ItemAddedHandler(object sender, ItemEventArgs e)

затем объявите событие, которое использует делегат:

   [Browsable(true)]
   public event ItemAddedHandler ItemAdded;

Примечание. ItemEventArgs - это настраиваемый EventArgs.

Надеюсь, что могу помочь, у меня отлично работает

Другие вопросы по теме