ASP.NET UserControl和DefaultEvent

时间:2008-08-14 16:14:36

标签: c# asp.net user-controls attributes

概要

好吧,我已经谷歌了,并且已经期待一个大胖子 NO !! 但是我想我应该问,因为我知道有时会潜伏在人们身边的奇怪的小知识宝石头^ _ ^

我正在通过书中的一些练习来学习,这个特别的练习是用户控制。我拼凑了一个控件,并希望为它设置DefaultEvent(为之前的控件完成此操作)所以当我双击它时,创建的默认事件是我指定的任何内容。

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

当前代码

这是班级&事件定义:

[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)
    {

    }

不是我所期待的!所以,我的问题是:

是否可以为UserControl定义DefaultEvent?这是一个黑客?如果[不]支持,是否有原因?


旁注:我们如何在代码中添加下划线?我似乎无法放入和逃避char?

2 个答案:

答案 0 :(得分:0)

好的,我查了一下,继承自WebControl而不是UserControl ..一切正常。

看起来Darren Kopp取得了这个王冠!感谢您的投入!

答案 1 :(得分:0)

这是一个可能的答案,没有经过测试(就像马丁那样)。

在反射器中,您将看到DefaultEventAttribute允许继承自身。 在反射器中,您会看到UserControl类将其默认事件设置为Load事件。

所以可能的原因是即使您使用OKClick的默认事件来装饰用户控件,VS仍可能认为默认事件是加载的,因为它是从UserControl继承的,其默认事件是Load。

只是高度猜测可能发生的事情。