Найдите правильные параметры для события, не используя режим разработки в Visual Studio 2010 - PullRequest
6 голосов
/ 27 декабря 2010

Есть ли способ узнать, какие параметры необходимы событию в Visual Studio 2010?

Допустим, у меня есть элемент управления DropDownList, и я хочу привязать метод к "OnSelectedIndexChanged", я бы сделалчто-то вроде этого

В файле ASPX:

<asp:DropDownList ID="lstMyList" runat="server" OnSelectedIndexChanged="lstMyList_SelectedIndexChanged"></asp:DropDownList>

В коде:

protected void lstMyList_SelectedIndexChanged(object sender, EventArgs e) 
{
    ...
}

Есть ли способ узнать, какие параметры нужны методу?(В данном случае это объект для отправителя и параметр EventArgs для события.)

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

Спасибо!

Ответы [ 2 ]

6 голосов
/ 27 декабря 2010

Вы можете узнать параметры, "перейдя к определению" (F12) для соответствующего события, выяснив, какой тип делегата он использует, а затем перейдя к определению по этому.В этом случае событие SelectedIndexChanged имеет тип EventHandler , который определяется следующим образом:

[SerializableAttribute]
[ComVisibleAttribute(true)]
public delegate void EventHandler(
    Object sender,
    EventArgs e
)

Вы также можете найти эту информацию, выполнив поиск в Интернете или нажав клавиши F1 ипоиск в справке.


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

Я думаю, вы должны попытаться преодолеть свой страх использования дизайнера.Скорее всего, вы теряете больше времени из-за потери производительности, не используя возможности генерации кода в Visual Studio, чем потенциальное время, которое вы могли бы сэкономить, защищая себя от того, что дизайнер испортит ваш код.

2 голосов
/ 27 декабря 2010

Едва ли экономичен с точки зрения нажатий клавиш и производительности, но это возможно, если вы все равно находите событие в коде в «Перейти к определению» и воображаете, что не возражаете против использования функций редактора кода VSТакже нужно нажать клавишу Tab, затем добавить + =, прежде чем нажать клавишу Tab еще два раза.Это создаст соответствующее делегирование и определение метода, что приведет к тому, что вы увидите сигнатуру метода.

Например, наберите следующее, вставив соответствующую вкладку (дважды после ввода '+ ='):

MyType.MyEvent += new System.EventHandler(MyType_MyEvent);

Создает метод, подобный следующему:

void MyType_MyEvent(object sender, EventArgs e)
{
    throw new NotImplementedException();
}

Теперь снижение производительности может произойти, если вам на самом деле не нужны оба куска кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...