Ответ 1
Вы можете сделать что-то подобное, да:
public event EventHandler SaveButtonClick
{
add { btnSave.Click += value; }
remove { btnSave.Click -= value; }
}
Обратите внимание, что есть недостаток в этом - аргумент "отправитель", предоставленный обработчикам событий, по-прежнему будет кнопкой сохранения, а не вашим контролем... это может быть не то, что ожидал абонент. Альтернативный подход заключается в том, чтобы подписаться один раз на кнопку "Сохранить клик":
public event EventHandler SaveButtonClick = delegate {};
private void OnSaveButtonClicked(object sender, EventArgs e)
{
// Replace the original sender with "this"
SaveButtonClick(this, e);
}
...
btnSave.Click += OnSaveButtonClicked();
Там тоже есть недостаток этого подхода... вы все время получаете ссылку от кнопки сохранения на "this", что может повлиять на сбор мусора. В основном ваш контроль не сможет быть собранным мусором до тех пор, пока кнопка сохранения не будет пригодна для сбора мусора. В этом случае я очень сомневаюсь, что это проблема, но об этом стоит знать.