UserControl中的事件

时间:2008-12-13 13:13:15

标签: events user-controls propertygrid

我是UserControls的新手,在开发自己的控件时发现了一个问题 在设计时在属性网格中显示我的控件事件。 如果我在控制中有一些事件,我想在属性网格中看到它们,如果我双击我想要一个处理程序,就像微软为其控件做的那样。

3 个答案:

答案 0 :(得分:3)

如果我没弄错的话,他们应该自动出现。确保您已经构建了项目,或者更改不会传播给开放设计者。并确保它也是 public 事件。 (私人/受保护的事件不应该出现,因为它们无法访问。)

要使用户的设计体验更好,您可以做的一件事就是执行以下操作:

    [Description("This event is raised when the user presses the enter key while the control has focus."),
    Category("Key")]
    public event EventHandler EnterPressed;

“description”位在属性窗口的描述面板中显示一条很好的消息。 “category”位将其置于某个类别(默认为末尾的Misc。)。

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

答案 1 :(得分:1)

我通常使用此模式,在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事件的命名约定相同,您可以从控件内部触发OnMyEvent,具有自定义EventArgs,从其他控件处理MyEvent。

答案 2 :(得分:0)

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