C # пытается получить событие для запуска, когда другое окно закрывается - PullRequest
0 голосов
/ 24 октября 2010

У меня есть одна форма, в которой есть возможность открыть другую (диалог).Я хочу, чтобы событие сработало, когда закроется второе окно.Первая форма называется frmMain (), другая - frmAddEmployee ().Вот что у меня есть: в frmMain ()

//create and open the second window
public void (object sender, EventArgs e)
{
     frmAddEmployee addEmp = new frmAddEmployee();
     addEmp.ShowDialogue();
}

//create event to handle addEmp being closed
public void addEmp_Closing(object sender, EventArgs e)
{
     PopulateEmployeeList();
}

Я не уверен, что событие распознается как событие.Что я делаю не так?

Ответы [ 4 ]

4 голосов
/ 24 октября 2010

События в C # должны регистрироваться вручную - компилятор C # не будет автоматически регистрировать метод в качестве обработчика событий, основываясь только на имени метода. Вам нужно:

 frmAddEmployee addEmp = new frmAddEmployee(); 
 addEmp.Closing += addEmp_Closing; // Register event handler explicitly
 addEmp.ShowDialogue(); 

Автоматическая регистрация событий выполняется в ASP.NET, а в Visual Basic есть предложение Handles, но в C # необходимо использовать оператор +=, чтобы указать, что при возникновении события должен вызываться какой-либо метод.

2 голосов
/ 24 октября 2010

Предполагая, что ShowDialogue означает ShowDialog, тогда он отображает форму модально, и вам не нужен обработчик событий:

//create and open the second window
public void (object sender, EventArgs e)
{
     frmAddEmployee addEmp = new frmAddEmployee();
     addEmp.ShowDialog();
     PopulateEmployeeList();
}

Если вы не показываете вторую форму модально, вы можете подключитьОбработчик события перед отображением формы:

public void (object sender, EventArgs e)
{
     frmAddEmployee addEmp = new frmAddEmployee();
     addEmp.FormClosed += AddEmpClosed;
     addEmp.Show();
}

private void AddEmpClosed(object sender, FormClosedEventArgs e)
{
     PopluateEmployeeList();
}
1 голос
/ 24 октября 2010

Существует Closing и Closed события, которые вы можете зарегистрировать на Form. Вы ни на что не зарегистрированы, если только ваша регистрация не происходит где-то еще?

0 голосов
/ 24 октября 2010

Перед тем, как вызвать addEmp.ShowDialog(), вам необходимо настроить метод для обработки события закрытия:

frmAddEmployee addEmp = new frmAddEmployee();
addEmp.Closing += addEmp_Closing;
addEmp.ShowDialogue();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...