C# ASP.NET用户控件';违约事件 轮廓

C# ASP.NET用户控件';违约事件 轮廓,c#,asp.net,user-controls,attributes,C#,Asp.net,User Controls,Attributes,好的,我已经用谷歌搜索了这个,并且已经期待一个大胖子不但我想我应该问一下,因为我知道有时候人们的头脑中可能潜藏着奇怪的知识宝藏^_^ 我正在学习一本书中的一些练习,这个练习就是用户控制。我已经拼凑了一个控件,并希望为它设置DefaultEvent(之前的控件都是这样做的),所以当我双击它时,创建的默认事件是我指定的 注意:这是一个标准用户控件(.ascx),而不是自定义呈现控件 现行代码 以下是类和事件定义: [System.ComponentModel.DefaultEvent("OKClic

好的,我已经用谷歌搜索了这个,并且已经期待一个大胖子但我想我应该问一下,因为我知道有时候人们的头脑中可能潜藏着奇怪的知识宝藏^_^

我正在学习一本书中的一些练习,这个练习就是用户控制。我已经拼凑了一个控件,并希望为它设置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)
    {

    }
不完全是我所期望的!所以,我的问题是:

是否可以为UserControl定义DefaultEvent?是黑客吗?如果它不被支持,有什么原因吗?
旁注:如何在代码中添加下划线?我似乎无法在没有测试的情况下(像马丁那样)将char放入并转义?

这里有一个可能的答案

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

因此,可能的原因是,即使您使用默认事件OKClick装饰您的用户控件,VS可能仍然认为默认事件是load,因为它是从默认事件为load的UserControl继承的


只是对可能发生的事情的高水平猜测。

好的,我检查了这个,继承自WebControl而不是UserControl。。一切都很好

看来这一次是夺冠了!谢谢你的意见