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

有帮助吗?

解决方案

如果我没记错的话,它们应该会自动出现。但请确保您已经构建了项目,否则更改将不会传播到开放的设计器。并确保它是一个 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#,则可能需要修改上面的内容。

其他提示

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

    #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。

您应该使用在代表用户控件,并在主页(aspx页面)。如果这样没有工作提出来,你要小心,当寄存器UserControlID.It需要与其他UserControl.Each用户控件不同,需要一个ID。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top