用户控制事件的设计时查看

问题描述 投票:0回答:3

我创建了一个继承自 System.Windows.Forms.UserControl 的 WinForms 控件...我在控件上有一些自定义事件,我希望控件的使用者能够看到这些事件。在设计时,我实际上无法让我的事件显示在“属性”窗口的“事件”选项卡中。这意味着分配事件的唯一方法是以编程方式编写

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

我想这对我来说很好,但是当其他人使用我的 UserControl 时,他们不会知道这些事件的存在(除非他们阅读库 doco...是的,对的)。我知道该事件将使用 Intellisense 显示,但如果它也可以显示在属性窗口中,那就太好了。

c# winforms user-controls
3个回答
30
投票

确保您的活动公开。例如...

[Browsable(true)]
public event EventHandler MyCustomEvent;

0
投票

使用委托的解决方案。例如,我用于处理项目添加事件的自定义 ListView : 宣布您的代表:

   public delegate void ItemAddedHandler(object sender, ItemEventArgs e)

然后声明使用委托的事件:

   [Browsable(true)]
   public event ItemAddedHandler ItemAdded;

注意:ItemEventArgs 是自定义 EventArgs

希望能帮助你,对我来说效果很好


0
投票

这个问题我已经遇到过很多次了! 当您按照教程操作时,他们使用标准

System.EventHandler
或任何内置处理程序作为您的委托类型,如果您的自定义事件是公共的,它将起作用。

但是!如果您不想使用内置事件处理程序之一(我大多不想),那么您必须定义自己的委托。但如果你这样做的方式错误,那么它仍然不会在编辑器中可见,即使它是公开的!

Visual Studio 正在寻找委托上的属性,以使其知道它是否应该出现在编辑器中。这是我之前制作的一个示例:

[ComVisible(true)]
public delegate void CustomerHappyDelegate(bool isHappy);

public event CustomerHappyDelegate CustomerHappy;
© www.soinside.com 2019 - 2024. All rights reserved.