В AddAgent1 вы не вызвали AddAgent2, вы только подписались на событие OnAddAgent.
Что у вас происходит:
addAgent.AddAgentMain(TextBoxSurName.Text);
ButtonAddAgent.Click += new System.EventHandler(AddAgent1);
Тут вы сначала вызываете событие OnAddAgent и только потом подписываетесь на событие Click кнопки. То есть к моменту, когда ваш хэндлер кнопки сработает, событие OnAddAgent уже было вызвано и так как на него никто не был подписан, ничего не произошло.
Вообще сложно определить по этому коду что вы хотите сделать, но если вы хотите вызывать OnAddAgent по нажатию кнопки, можно использовать этот код:
private void newAgent()
{
Button ButtonAddAgent = new Button();
ButtonAddAgent.Text = "Добавить агента";
ButtonAddAgent.AutoSize = true;
ButtonAddAgent.Location = new System.Drawing.Point(290, 200);
ButtonAddAgent.Click += new System.EventHandler(AddAgent1);
addAgent.OnAddAgent += AddAgent2;
splitContainer1.Panel2.Controls.Add(ButtonAddAgent);
}
private void AddAgent1 (object sender, EventArgs e)
{
MessageBox.Show("Before firing OnAddAgent event");
addAgent.AddAgentMain(TextBoxSurName.Text);
}
private void AddAgent2(object sender, AddAgentEventArgs e)
{
Console.WriteLine("Inside OnAddAgent event handler");
MessageBox.Show(e.AddAgentInfo);
}
И совет как правильно вызывать ивенты:
public void AddAgentMain(string test)
{
var handler = OnAddAgent;
if (handler != null)
{
// Создаём объект аргумента события и помещаем в него текст письма
var e = new AddAgentEventArgs { AddAgentInfo = test };
handler(this, e);
}
}
Или используя фичи C#6:
public void AddAgentMain(string test)
{
// Создаём объект аргумента события и помещаем в него текст письма
var e = new AddAgentEventArgs { AddAgentInfo = test };
OnAddAgent?.Invoke(this, e);
}
Более подробно почему стоит вызывать ивенты именно так можно почитать
тут.