То, что вы пытаетесь сделать, может быть достигнуто с помощью интерфейсов или абстрактных классов. Создайте интерфейс и реализуйте его в двух моделях или создайте абстрактный класс и расширьте его из вашего класса двух пользователей. Затем при передаче аргумента используйте интерфейс или абстрактный класс в качестве подсказки типа, например
public function createLogin(UserInterface $user) {
}
Да, это - то, как Visual Studio предназначается для работы. Это не помогает Вам просмотреть их в панели свойств, но можно получить список событий (среди прочего) путем ввода следующего в коде - позади:
"this.
"и intellisense должен показать Вам список.
То, что я обычно делаю, переопределить метод OnInit и поместить все отображения обработчика событий там. Так, чтобы это выглядело примерно так:
override protected void OnInit(EventArgs e)
{
this.Load += new System.EventHandler(this.Page_Load);
this.myButton.Click += new System.EventHandler(this.myButton_Click);
base.OnInit(e);
}
Если Вы делаете это с помощью intellisense, поскольку скоро Вы вводите "+ =", у Вас будет опция автоматически заполнить ту строку и подпись метода обработчика событий также.
Да, мне жаль, что у нас не было подобного уровня автозавершения события, которое мы получаем с WPF, где Вы видите имя события в IntelliSense и заставляете это автоматически создавать новое тупиковое событие для Вас в коде позади :(
Я не знаю, является ли это способом, которым VS 'предназначается для работы, но да это - ограничение. В случае, если Вы заметили иногда нажатие на управление, и нажатию F4 (или нажатие на вкладку свойств) не удается загрузить свойства для корректного управления, и затем необходимо выбрать его из списка.
Вздох
Это независимо, если Вы делаете usercontrol собственное, и даете ему событие, то событие, не обнаружится на вкладке свойств при помещении его на странице. Необходимо будет получить его вручную в событии Page_Init (как продемонстрированный fallen888).
В эти дни я не беспокоюсь попыткой к вкладке свойств видеть событие. Можно точно также ввести имя события в разметке и затем записать это в коде - позади файла.