ASP.NET UserControl 和 DefaultEvent
-
08-06-2019 - |
题
大纲
好的,我已经用谷歌搜索过这个并且已经期待一个大胖子了 不!! 但我想我应该问,因为我知道有时人们的头脑中可能潜藏着奇怪的小知识宝石^_^
我正在学习一本书中的一些练习,这个特殊的练习是用户控件。我拼凑了一个控件,并想为其设置 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?这是黑客攻击吗?如果[不]支持,有什么理由吗?
边注: :我们如何在代码中添加下划线?我似乎无法放入并转义字符?
解决方案
这里有一个 可能的 回答,无需测试(就像马丁所做的那样)。
在反射器中,您将看到 DefaultEventAttribute 允许自身被继承。在反射器中,您会看到 UserControl 类将其默认事件设置为 Load 事件。
所以可能的原因是,即使你用 OKClick 的默认事件装饰你的用户控件,VS 可能仍然认为默认事件是 load,因为它是从默认事件是 Load 的 UserControl 继承的。
只是对可能发生的情况的高级猜测。
其他提示
好的,我检查了这一点,继承自 WebControl 而不是 UserControl..一切都很好。
好像 达伦·科普 为这一位夺得桂冠!感谢您的投入!
不隶属于 StackOverflow