Сведения о вопросе

Kimsanov

18:21, 9th August, 2020

Теги

И DefaultEvent ASP.NET UserControl по

Просмотров: 508   Ответов: 2

Контур

OK, я гуглил это и уже ожидал большой жир NO! ! Но я подумал, что должен спросить, так как я знаю, что иногда могут быть странные маленькие gem знания, скрывающиеся в головах людей ^_^

Я работаю над некоторыми упражнениями в книге для изучения, и это конкретное упражнение-пользовательские элементы управления. Я собрал элемент управления и хотел бы установить для него DefaultEvent (сделав это для предыдущих элементов управления), поэтому, когда я дважды щелкаю по нему, созданное событие по умолчанию-это то, что я указываю.

NOTE: это стандартный пользовательский элемент управления (.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)
    {

    }

Не совсем то, что я ожидал! Итак, мой вопрос:

Можно ли определить DefaultEvent для UserControl? Это хак? Если это не поддерживается, почему?


Примечание: как мы помещаем подчеркивания в код? Кажется, я не могу поставить и избежать char?



  Сведения об ответе

ASER

03:23, 21st August, 2020

Вот возможный ответ, без тестирования (как это сделал Мартин).

В reflector вы увидите, что DefaultEventAttribute позволяет себе быть унаследованным. В reflector вы видите, что класс UserControl имеет событие по умолчанию, установленное на событие Load.

Таким образом, возможная причина заключается в том, что, хотя вы украшаете свой пользовательский элемент управления событием по умолчанию OKClick, VS все еще может думать, что событие по умолчанию-это load, поскольку оно наследуется от UserControl, чье событие по умолчанию-Load.

Просто высокоуровневая догадка о том, что может произойти.


  Сведения об ответе

dumai

07:43, 18th August, 2020

Хорошо, я проверил это, наследуя от WebControl, а не от UserControl.. Все работало отлично.

Похоже, что Даррен Копп берет корону за это! Спасибо за Ваш вклад!


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться