2011-12-23 2 views
0

Мне бы хотелось использовать функцию с параметрами в окне свойств с списком событий. этот четный список справа от его визуальной студии допускает только некоторые функции с отправителем объектов и eventargs e и не отображает пользовательскую функцию с параметрами. Это общее поведение или я должен искать ошибку?Могу ли я передать значения функции обработки событий?

+0

Работает ли ваше мероприятие при привязке к нему? –

+0

Вы можете установить параметры в пользовательских событиях (унаследованных от EventArgs) как e. –

ответ

1

Вы можете просто использовать кнопку CommandArgument вашей кнопки.

yourButton.Click += new EventHandler(yourButton_Click); yourButton.CommandArgument = "your parameters";

и в методе обработчика событий необходимо выполнить следующие действия:

string yourParameters = (sender as Button).CommandArgument.ToString()

Надеется, что это помогает.

1

Написать потомок EventArgs.

например.

public class MyEventArgs: EventArgs { 
    public MyEventArgs(string arg1, int arg2) { 
     this.MyValue = arg1; 
     this.MyNumber = arg2; 
    } 

    public string MyValue; 
    public int MyNumber; 

} 

Nows Это нормально параметр для EventHandler, когда вы пишете один е, будет иметь MyValue и MyNumber свойствами.

0

Button.Click определяется как есть, и нет способа изменить его. Однако

yourButton.Click += delegate { YourButton_click(1); } 

выполнит эту работу.

0

Вы можете регистрировать обработчики только на событии, которое соответствует объявлению события (подпись делегата).

Если вы хотите использовать заранее определенные события и Dont создать свой собственный, вы должны следовать за подписью обработчик события

0

Правильный способ использования событий в .Net заключается в следующем:

  • использовать делегат с именем, которое заканчивается EventHandler
  • этот делегат имеет ровно два параметра, sender и e. sender должен иметь тип object и должен содержать ссылку на экземпляр класса, который поднял событие. e должен иметь тип, который наследуется от EventArgs (часто EventArgs). e - это экземпляр, содержащий данные события.

Вы не должны ожидать, что найдете какую-либо другую подпись обработчика событий, это всегда (object sender, XXXEventArgs e).

Обратите внимание, что когда вы поднимаете события и не должны передавать данные о событиях, следует использовать EventArgs.Empty.

public delegate void MyEventHandler(object sender, EventArgs e); 

public event MyEventHandler MyEvent; 

public void OnMyEvent() 
{ 
    if (this.MyEvent != null) 
    { 
     this.MyEvent(this, EventArgs.Empty); 
    } 
} 
Смежные вопросы