Обычный способ сделать это - поместить ваш GridView в UserControl
Если вы разместите свою сетку на пользовательском элементе управления и подпишитесь на все события там, то вы можете повторно использовать эту реализацию в любом месте приложения - вы, по сути, просто оборачиваете пользовательский элемент управления нужной вам функциональностью, а затем повторное использование этой оболочки везде.
Замечательно, что вам нужно всего лишь один раз написать код подключения.
Это то, что я думаю, ты хочешь сделать.
Если вы хотите расширить или обработать эти события вне пользовательского контроля, вам нужно будет переопределить их (то есть добавить свои собственные обработчики событий и позволить им всплыть).
Вы не можете заставить никого подписаться на ваши события.
Если вы хотите принудительно реализовать реализацию событий, вы можете поместить события в интерфейс и реализовать этот интерфейс в классе или элементе управления, в который вы добавляете его. Поскольку события находятся в интерфейсе, вы не сможете скомпилировать, пока интерфейс не будет реализован.
Если у вас есть конкретный вариант использования, я могу попытаться добавить пример.