Хорошо, я погуглил и уже ожидал большое жирное НЕТ!!! Но я подумал, что должен спросить, так как я знаю, что иногда в головах людей могут таиться странные маленькие жемчужины знаний ^_^
Я прохожу свой путь через некоторые упражнения в книге для изучения, и это конкретное упражнение - User Controls. Я собрал элемент управления и хотел бы установить для него DefaultEvent (сделав это для предыдущих элементов управления), чтобы при двойном щелчке создавалось событие по умолчанию, которое я укажу.
NOTE: Это стандартный User Control (.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)
{
}
Не совсем то, что я ожидал! Итак, мой вопрос:
Примечание: Как ставить подчеркивания в коде? Я не могу вставить символ подчеркивания?
Вот возможный ответ, без тестирования (как это сделал Мартин).
В отражателе вы увидите, что атрибут DefaultEventAttribute позволяет наследовать себя. В отражателе вы видите, что класс UserControl имеет событие по умолчанию, установленное на событие Load.
Таким образом, возможная причина в том, что даже если вы украшаете свой пользовательский элемент управления событием по умолчанию OKClick, VS может все еще думать, что событие по умолчанию - это load, поскольку он наследуется от UserControl, чье событие по умолчанию - Load.
Это лишь предположение на высоком уровне о том, что может происходить.
Хорошо, я проверил это, наследование от WebControl, а не от UserControl... Все работает нормально.
Похоже, что Darren Kopp берет корону за это! Спасибо за информацию!