События в UserControl
-
21-08-2019 - |
Вопрос
Я новичок в UserControls, и при разработке своего собственного элемента управления я обнаружил проблему с отображением событий моего элемента управления в таблице свойств во время разработки.Если у меня есть какие-то события в моем элементе управления, я хочу видеть их в таблице свойств, и если я дважды щелкну, я хочу иметь обработчик, точно так же, как Microsoft делает для своих элементов управления.
Решение
Они должны появиться автоматически, если я не ошибаюсь.Однако убедитесь, что вы создали свой проект, иначе изменения не будут распространены на open designers.И убедитесь, что это public
событие тоже.(Частные / защищенные события по праву не должны отображаться, потому что они недоступны.)
Одна вещь, которую вы можете сделать, чтобы улучшить взаимодействие вашего пользователя с дизайном, - это сделать что-то вроде следующего:
[Description("This event is raised when the user presses the enter key while the control has focus."),
Category("Key")]
public event EventHandler EnterPressed;
Бит "description" выводит приятное сообщение на панель описания окна свойств.Бит "категория" помещает его в определенную категорию (по умолчанию используется Разное).в конце).
Кстати, вы не указали язык или среду, поэтому вышеуказанное, возможно, потребуется изменить, если это не C # в Visual Studio 2005+.
Другие советы
Обычно я использую этот шаблон для создания пользовательского события в UserControls:
#region MyEvent CUSTOM EVENT
protected virtual void OnMyEvent(MyEventEventArgs e)
{
if (MyEvent != null)
MyEvent(this, e);
}
public delegate void MyEventHandler(object sender, MyEventEventArgs e);
public event MyEventHandler MyEvent;
public class MyEventEventArgs : EventArgs
{
}
#endregion MyEvent CUSTOM EVENT
Это имеет то же соглашение об именовании, что и Microsoft events, вы можете запускать OnMyEvent из своего элемента управления, иметь пользовательские EventArgs, обрабатывать MyEvent из других элементов управления.
Вы должны использовать делегат в UserControl и вызвать его на главной странице (aspx-страница) .Если этот способ не сработал, вам следует быть осторожным при регистрации UserControlID.Он должен отличаться от другого UserControl.Каждому UserControl нужен идентификатор.