Другие ответы предполагают, что метод не должен быть публичным.
В общем, я отвергаю это - по крайней мере, без дальнейшего обоснования. Если вы хотите выставить метод именно с такой сигнатурой, я бы обычно так и делал.Однако есть два предостережения:
- Обычно подпись обработчика событий бесполезна , за исключением в качестве обработчика событий;параметры обычно не используются при непосредственном вызове метода.Как и всегда, есть исключения.
- Если вы подпишете обработчик событий с помощью открытого метода, любой другой код может отписаться от этого обработчика событий, создав равный делегат.Если вы управляете всем кодом в приложении, это не составляет большой проблемы.
Оба случая можно решить, предоставив общедоступный метод с точно такими параметрами, которые вы хотите (что может все еще будут параметрами обработчика события, но часто не будут) и затем используют лямбда-выражение для подписки на событие:
// I want to be able to call this from other code
public void SaveItem()
{
// ...
}
// Hook up the event handler using a lambda expression
saveButton.Click += (sender, args) => SaveItem();
С другой стороны, если ни одна из точек не является проблемой,иди вперед и сделай метод общедоступным вручную.Я бы не ожидал, что для этого будет ярлык VS, но просто указать модификатор public
довольно просто.