Запуск пользовательских событий / общая обработка событий - PullRequest
1 голос
/ 23 июля 2010

Сейчас я перехожу к обработке событий, и это кажется мне довольно запутанным.Видите ли, я пришел из веб-разработчика, так что это событие для меня совершенно новое.

Я занимаюсь разработкой на C # / VS08 и создал свое приложение в WinForm-Designer.

Теперь я создал обзор этой программы;

ProgramContext
 MainForm : Form
 LoginForm : Form

Итак, что я хочу сделать - это когда пользователь нажимает «Выход» (что такое пункт меню в MainMenu MainForm), что приложение регистрирует журналout of user.

Но как я могу получить доступ к событию "Click" элемента выхода из представления ProgramContext, поскольку есть вся логика входа в систему и т. д.

Я попробовал следующее

MenuItem[] findLogout = MainMenuStrip.Items.Find("logoutMenuItem", true); // Throws NullPointerException
findLogout[0].Click += new EventHandler(LogoutClick);

private void LogoutClick(object sender, EventArgs e)
{
 // Logout user
}

Но продолжайте получать исключение NullPointerException в первой строке.

1 Ответ

2 голосов
/ 23 июля 2010

Самое простое - выставить событие в MainForm:

public EventHandler LogOut;

Затем подключите это от вашего ProgramContext:

MainForm form = new MainForm();
form.LogOut += new EventHandler(MainForm_LogOut);

void MainForm_LogOut(object sender, EventArgs e)
{
    // Logout
}

Затем нажмите кнопку LogOut в главном меню, используя следующий код в событии щелчка элемента меню:

private void LogoutClick(object sender, EventArgs e)
{
    if (LogOut != null)
    {
        LogOut(sender, e);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...