Вопрос

Контур

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

Я работаю над некоторыми упражнениями в книге для изучения, и это конкретное упражнение — «Пользовательские элементы управления».Я собрал элемент управления и хотел бы установить для него 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?Это хак?Если он [не] поддерживается, есть ли причина?


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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

Выглядит как Даррен Копп получает за это корону!Спасибо за вклад!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top