ASP.NET UserControl и DefaultEvent - PullRequest
       17

ASP.NET UserControl и DefaultEvent

5 голосов
/ 14 августа 2008

Outline

Хорошо, у меня есть 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? Это взломать? Если он не поддерживается, есть ли причина?


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

Ответы [ 2 ]

0 голосов
/ 15 августа 2008

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

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

0 голосов
/ 14 августа 2008

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...