2010-06-03 4 views
2

У меня есть класс, который я хочу, чтобы иметь возможность обрабатывать событие мыши для сетки.Передача события в конструктор

Я пытался создать его с помощью статического вызова метода, как это:

MyDataBinding.BindObjectsToDataGrid(ListOfObjectsToBind, myGrid.MouseUp); 

Конечная цель в том, что в методе я бы назначить делегата на MouseUp

PassedInMouseUp += myMethodThatWillHandleTheMouseUp; 

выглядит хорошо здесь (мне), но компилятор задыхается в первой строке. В нем говорится, что я могу использовать MouseUp только с + = или a = =.

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

  • перевала во всей сетке
  • Expose метода, который будет обработка мыши вверх, как общедоступный метод.

Или, это просто ограничение, и мне нужно будет сделать одно из вышеуказанных?

ответ

1

Это невозможно без отражения.

Подобные свойства, .Net события объединяются в пару методов доступа - add_EventName и remove_EventName. Нет ничего, что вы могли бы передать в качестве аргумента.

+0

Возможно, я мог бы сделать делегат, который будет добавлять метод к событию, а затем передать его в метод. (Будет вызвано позже.) Будет ли это работать? --- (Лучше еще я пойду попробовать) – Vaccano

+2

Это сработает. 'MyDataBinding.BindObjectsToDataGrid (ListOfObjectsToBind, h => myGrid.MouseUp + = h);'. Параметром будет «Action ». – SLaks