ASP.NET UserControl的和DefaultEvent

5

概述

好的,我已经在谷歌上搜索过了,预计会得到一个明确的NO!!但是我认为我应该问一下,因为我知道有时候人们的头脑中存在着一些奇怪的小知识宝石^_^

我在读书时通过一些练习,学习用户控件。我已经拼凑出一个控件,并想设置它的默认事件 (在之前的控件中也这样做过),这样当我双击它时,创建的默认事件就是我指定的事件。

注意: 这是标准的用户控件 (.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?这是一种hack吗?如果它[不]被支持,是否有原因?


副注意事项:我们如何在代码中添加下划线?我似乎无法放置和转义字符?

2个回答

0

这里是一个可能的答案,没有像马丁那样进行测试。

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

因此,可能的原因是,即使您使用OKClick作为默认事件来装饰您的用户控件,但VS仍然认为默认事件是Load,因为它从其默认事件为Load的UserControl继承而来。

这只是对可能发生的情况的高层猜测。


0

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

看起来Darren Kopp赢得了这个奖项!感谢您的贡献!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接