Попросите вашего Class2 выставить пользовательское публичное событие. Это событие срабатывает при срабатывании управляющего события.
// In Class2
public event EventHandler<EventArgs<T>> ControlClickedEvent = null;
protected void OnControlClickedEvent()
{
if (ControlClickedEvent != null)
{
ControlClickedEvent(this, new EventArgs());
}
}
...
private void cmdButton_Click(object sender, EventArgs e)
{
OnControlClickedEvent();
}
Тогда ваш Class1 подписывается на это событие. «Обработчик событий» является частью Class1.
// In Class1
MyClass2.ControlClickedEvent += new EventHandler<EventArgs<ControlClickedEvent>>(EventHandler);
Если вы используете несколько потоков, убедитесь, что вы используете методы InvokeRequired и BeginInvoke / Invoke в коде обработчика событий в Class1.