ASP.NET UserControl和DefaultEvent

时间:2020-03-05 18:39:40  来源:igfitidea点击:

好的,我已经在Google上搜索了,并且已经期望不胖了!!但是我想问一下,因为我知道有时候人们的脑海中会隐约浮现出一些奇特的知识^ _ ^

我正在努力学习一本书中的一些练习内容,这个特定的练习是"用户控件"。我将一个控件拼凑在一起,想为其设置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?是hack吗?如果不支持,是否有原因?

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

解决方案

回答

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

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

因此,可能的原因是,即使我们用OKClick的默认事件来装饰用户控件,VS仍可能会认为默认事件是load,因为它是从UserControl继承而来的,默认事件是Load。

只是对可能发生的情况进行高级别的猜测。

回答

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

看起来Darren Kopp赢得了这个桂​​冠!感谢输入!