использование делегата в качестве параметра обработчика событий - PullRequest
0 голосов
/ 03 марта 2011

имеет параметр функции типа делегат. функция добавляет обработчик событий и ожидает метод в качестве параметра. как этого добиться?

пример:

private void myFunction( Delegate del )
{
...
var b = new Button();
b.Click += new EventHandler( <method delegate refers to should be used> );
}

Ответы [ 4 ]

1 голос
/ 03 марта 2011

В данный момент нет, это не имеет смысла - потому что это может быть делегат любого типа.

Что бы вы хотели, чтобы происходило, если передаваемый делегат занимал 15параметры?Как это будет называться?

Если бы вы могли дать больше информации о том, чего вы пытаетесь достичь - и почему вы пытаетесь использовать просто Delegate вместо какого-то определенного типа делегата - это помогло бы.

1 голос
/ 03 марта 2011

Если вы можете изменить тип del на EventHandler, тогда вы можете просто использовать следующее:

b.Click += del;
0 голосов
/ 03 марта 2011

Попробуйте использовать такой код:

    ...............
    private void btn_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Hello");
    }        

    private void MyFunc(EventHandler Meth)
    {
        button1.Click += Meth;
    }

    private void TestCall()
    {
        MyFunc(btn_Click);
    }
    ............
0 голосов
/ 03 марта 2011

Параметр myFunction должен быть Action<object, EventArgs>

private void myFunction(Action<object, EventArgs> del)
{
  var b = new Button();
  b.Click += new EventHandler(del);
}

Или просто EventHandler

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