Events UserControl中的事件

Events UserControl中的事件,events,user-controls,propertygrid,Events,User Controls,Propertygrid,我不熟悉UserControls,在开发自己的控件时,我发现了一个问题 在设计时在属性网格中显示控件的事件。 如果我的控件中有一些事件,我希望在属性网格中看到它们,如果我双击希望有一个处理程序,就像Microsoft对其控件所做的那样。如果我没有弄错,它们应该会自动出现。但请确保您已经构建了项目,否则更改将不会传播到开放式设计器。还要确保这也是一个公开的活动。(私人/受保护的事件不应该出现,因为它们不可访问。) 要让用户的设计体验更好,您可以做以下一件事: [Description("T

我不熟悉UserControls,在开发自己的控件时,我发现了一个问题 在设计时在属性网格中显示控件的事件。
如果我的控件中有一些事件,我希望在属性网格中看到它们,如果我双击希望有一个处理程序,就像Microsoft对其控件所做的那样。

如果我没有弄错,它们应该会自动出现。但请确保您已经构建了项目,否则更改将不会传播到开放式设计器。还要确保这也是一个公开的活动。(私人/受保护的事件不应该出现,因为它们不可访问。)

要让用户的设计体验更好,您可以做以下一件事:

    [Description("This event is raised when the user presses the enter key while the control has focus."),
    Category("Key")]
    public event EventHandler EnterPressed;
“description”位在属性窗口的description面板中显示一条漂亮的消息。“类别”位将其置于特定类别中(最后的默认值为杂项)


顺便说一句,您尚未指定语言或环境,因此如果不是Visual Studio 2005+中的C#,则可能需要修改上述内容。

我通常使用此模式在UserControls中创建自定义事件:

    #region MyEvent CUSTOM EVENT

    protected virtual void OnMyEvent(MyEventEventArgs e)
    {
        if (MyEvent != null)
            MyEvent(this, e);
    }

    public delegate void MyEventHandler(object sender, MyEventEventArgs e);
    public event MyEventHandler MyEvent;

    public class MyEventEventArgs : EventArgs
    {

    }

    #endregion MyEvent CUSTOM EVENT

这与Microsoft events具有相同的命名约定,您可以从控件内部启动OnMyEvent,自定义EventArgs,从其他控件处理MyEvent。

您应该在UserControl中使用委托,并在主页面(aspx页)中提升它。如果这种方式不起作用,注册UserControlID时应该小心。它需要与其他UserControl不同。每个UserControl都需要一个ID