События в UserControl

Я новичок в UserControls, и при разработке собственного элемента управления я обнаружил проблему с отображением событий моего элемента управления в сетке свойств во время разработки. Если у меня есть некоторые события в моем контроле, я хочу видеть их в сетке свойств, и если я дважды щелкаю, что хочу иметь обработчик, точно так же, как Microsoft делает для своих элементов управления.

13.12.2008 13:13:15
3 ОТВЕТА
РЕШЕНИЕ

Они должны автоматически появиться, если я не ошибаюсь. Убедитесь, что вы создали свой проект, иначе изменения не распространятся на открытых дизайнеров. И убедитесь, что это тоже 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" помещает приятное сообщение в панель описания окна свойств. Бит «категория» помещает его в определенную категорию (по умолчанию Misc. В конце).

Кстати, вы не указали язык или среду, поэтому может потребоваться изменить приведенное выше, если это не C # в Visual Studio 2005+.

3
13.12.2008 13:27:40

Я обычно использую этот шаблон, чтобы создать пользовательское событие в 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, вы можете запускать OnMyEvent из своего элемента управления, иметь собственные EventArgs, обрабатывать MyEvent из других элементов управления.

1
3.07.2009 11:50:41

Вам следует использовать Delegate в UserControl и поднять его на главной странице (страница aspx). Если этот способ не работает, вам следует быть осторожным при регистрации UserControlID. Он должен отличаться от других UserControl. Каждому UserControl нужен идентификатор.

0
26.01.2013 03:24:47