Вы, кажется, на правильном пути, однако не ясно, каков ваш contact
здесь. Обычно вы используете делегаты (по существу, указатели на функции) для методов, которые имеют передаваемые аргументы:
if (bDeleteRdClick)
DeleteRD.Click -= delegate { DeleteRDClick(this.Object); };
DeleteRD.Click += delegate { DeleteRDClick(this.Object); };
, где вы обязательно удалите уже существующие делегаты, в противном случае они будут «складываться», вызывая несколько методов, когда в этом нет необходимости.
Для метода, описанного выше, использование EventHandler
представляется мне правильным подходом, но, как я утверждаю выше, проверка того, является ли contact
правильного типа, не будет пропущена:
if (this.contact.GetType() == typeof(RibbonButton))
{
RibbonButton Rb = (RibbonButton)contact;
Rb.Click += new EventHandler(contact_Click);
}
Надеюсь, это поможет.