【问题标题】:Design Time viewing for User Control events用户控制事件的设计时查看
【发布时间】:2008-09-27 02:52:10
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# winforms user-controls


    【解决方案1】:

    确保您的活动公开。比如……

    [Browsable(true)]
    public event EventHandler MyCustomEvent;
    

    【讨论】:

    • 它是一个公共自定义事件处理程序,事件处理程序类型是一个公共委托......功能上没有任何问题......事件以正确的方式工作和触发,这纯粹是一个设计时间问题.
    • 啊哈,确保事件处理程序定义始终声明为公共,否则它将不可见。
    • 我也刚刚将它从我的自定义事件处理程序类型更改为一个简单的 EventHandler,但它仍然没有显示在属性窗口的事件选项卡中
    • 我已更新答案以显示您可以尝试的额外浏览器属性
    【解决方案2】:

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

       public delegate void ItemAddedHandler(object sender, ItemEventArgs e)
    

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

       [Browsable(true)]
       public event ItemAddedHandler ItemAdded;
    

    注意:ItemEventArgs 是一个自定义 EventArgs

    希望能帮到你,对我来说很好

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多