5

大纲

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

我正在研究一本书中的一些练习,这个特定的练习是用户控制。我拼凑了一个控件,并希望为其设置 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 放入和转义?

4

2 回答 2

0

这是一个可能的答案,无需测试(就像马丁所做的那样)。

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

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

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

于 2008-08-14T16:42:13.093 回答
0

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

看起来达伦·科普( Darren Kopp)为此夺冠!感谢您的输入!

于 2008-08-15T08:22:42.447 回答