代码之家  ›  专栏  ›  技术社区  ›  F.P

触发自定义事件/常规事件处理

  •  1
  • F.P  · 技术社区  · 14 年前

    我现在正在着手处理事件,这让我很困惑。看,我来自一个网络开发背景,所以这个事件的东西是相当新的我。

    我正在C/VS08中开发,并在winformdesigner中创建了我的应用程序。

    现在,我创建了这个程序概述;

    ProgramContext
     MainForm : Form
     LoginForm : Form
    

    所以,我想做的是当用户单击“Logout”(MainForm主菜单中的菜单项)时,应用程序将用户注销。

    但是如何从ProgramContext的视图访问logout项的“Click”事件,因为有登录等所有逻辑。

    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 回复  |  直到 14 年前
        1
  •  2
  •   djdd87    14 年前

    public EventHandler LogOut;
    

    从你的手上勾入这个 ProgramContext :

    MainForm form = new MainForm();
    form.LogOut += new EventHandler(MainForm_LogOut);
    
    void MainForm_LogOut(object sender, EventArgs e)
    {
        // Logout
    }
    

    private void LogoutClick(object sender, EventArgs e)
    {
        if (LogOut != null)
        {
            LogOut(sender, e);
        }
    }