代码之家  ›  专栏  ›  技术社区  ›  Rob Cooper

ASP.NET用户控件和DefaultEvent

  •  5
  • Rob Cooper  · 技术社区  · 17 年前

    轮廓

    好吧,我已经在谷歌上搜索过了,我已经期待着一个大肥肉了。 不!! 但我想我应该问问,因为我知道有时候人们的头脑里可能隐藏着一种奇怪的知识宝藏。^^

    我正在学习一本书中的一些练习,这个练习是用户控制。我已经拼凑了一个控件,并希望为它设置defaultEvent(已经为以前的控件设置了这个设置),所以当我双击它时,创建的默认事件就是我指定的它。

    注: 这是标准用户控件(.ascx), 不是 自定义呈现的控件。

    现行规范

    以下是类和事件定义:

    [System.ComponentModel.DefaultEvent("OKClicked")]
    public partial class AddressBox : System.Web.UI.UserControl
    {
        public event EventHandler OKClicked;
    

    当前结果

    现在,当我在ASPX页上双击该控件时,将创建以下内容:

        protected void AddressBox1_Load(object sender, EventArgs e)
        {
    
        }
    

    不是我期望的那样!所以,我的问题是:

    是否可以为用户控件定义DefaultEvent?是黑客吗?如果不支持,有什么原因吗?


    边注 :我们如何在代码中加下划线?我好像放不下炭了?

    2 回复  |  直到 17 年前
        1
  •  0
  •   Darren Kopp    17 年前

    这里是一个 可能的 回答,不用测试(就像马丁那样)。

    在Reflector中,您将看到DefaultEventAttribute允许自己被继承。 在Reflector中,可以看到UserControl类将其默认事件设置为加载事件。

    因此,可能的原因是,即使您使用默认事件okclick来修饰用户控件,vs可能仍然认为默认事件是load,因为它是从默认事件为load的user control继承的。

    只是对可能发生的事情的一个高层次的猜测。

        2
  •  0
  •   Community Mohan Dere    9 年前

    好的,我签出了这个,继承自WebControl而不是UserControl。一切正常。

    看起来像 Darren Kopp 为这个拿王冠!感谢您的输入!