Вопрос

Я новичок в 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 нужен идентификатор.

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