好吧,我已经谷歌了,并且已经期待一个大胖子 NO !! 但是我想我应该问,因为我知道有时会潜伏在人们身边的奇怪的小知识宝石头^ _ ^
我正在通过书中的一些练习来学习,这个特别的练习是用户控制。我拼凑了一个控件,并希望为它设置DefaultEvent(为之前的控件完成此操作)所以当我双击它时,创建的默认事件是我指定的任何内容。
注意:这是标准用户控件(.ascx), NOT 自定义呈现控件。
这是班级&事件定义:
[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)
{
}
不是我所期待的!所以,我的问题是:
旁注:我们如何在代码中添加下划线?我似乎无法放入和逃避char?
答案 0 :(得分:0)
这是一个可能的答案,没有经过测试(就像马丁那样)。
在反射器中,您将看到DefaultEventAttribute允许继承自身。 在反射器中,您会看到UserControl类将其默认事件设置为Load事件。
所以可能的原因是即使您使用OKClick的默认事件来装饰用户控件,VS仍可能认为默认事件是加载的,因为它是从UserControl继承的,其默认事件是Load。
只是高度猜测可能发生的事情。
答案 1 :(得分:0)
好的,我查了一下,继承自WebControl而不是UserControl ..一切正常。
看起来Darren Kopp取得了这个王冠!感谢您的投入!