События в UserControl - PullRequest
       16

События в UserControl

3 голосов
/ 13 декабря 2008

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

Ответы [ 3 ]

3 голосов
/ 13 декабря 2008

Они должны автоматически появиться, если я не ошибаюсь. Убедитесь, что вы создали свой проект, иначе изменения не распространятся на открытых дизайнеров. И убедитесь, что это тоже событие 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 +.

1 голос
/ 03 июля 2009

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

0 голосов
/ 26 января 2013

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

...