用户控件中的事件

3

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

3个回答

3
如果我没记错的话,应该会自动出现。但请确保您已经构建了项目,否则更改可能不会传递到打开的设计师。同时,请确保这是一个公共事件。(私有/受保护的事件不应该显示,因为它们不可访问。)
为了使用户的设计体验更加友好,您可以尝试以下操作:
    [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

我通常使用这种模式,在用户控件中创建自定义事件:

    #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

这个命名约定与微软事件相同,您可以从控件内部触发OnMyEvent,具有自定义的EventArgs,处理来自其他控件的MyEvent。


0
你应该在UserControl中使用Delegate,并在主页面(aspx页面)中引发它。如果这种方法不起作用,那么在注册UserControlID时要小心。它需要与其他UserControl不同。每个UserControl都需要一个ID。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接