3

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

4

3 回答 3

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;

“描述”位在属性窗口的描述面板中放置了一条很好的消息。“类别”位将其归入某个类别(默认为 Misc. 最后)。

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

于 2008-12-13T13:27:40.280 回答
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。

于 2009-07-03T11:50:41.867 回答
0

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

于 2013-01-26T03:24:47.537 回答