ASP.NET UserControl и DefaultEvent

Контур

Хорошо, у меня есть Google, и я уже ожидаю большой жирный НЕТ! Но я подумал, что должен спросить, потому что я знаю, что иногда в головах людей таится странная маленькая жемчужина знаний ^ _ ^

Я прорабатываю некоторые упражнения в книге для изучения, и это конкретное упражнение - пользовательский контроль. Я собрал воедино элемент управления и хотел бы установить для него 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)
    {

    }

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

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


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

14.08.2008 16:14:36
2 ОТВЕТА
РЕШЕНИЕ

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

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

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

Просто предположение высокого уровня о том, что может происходить.

0
14.08.2008 16:42:13

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

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

0
23.05.2017 12:33:27