自定义menustrip控件无法正常工作

时间:2013-06-06 16:58:43

标签: c# winforms user-controls menubar

所以我正在开发一个程序作为我公司数据库的前端,我有一个用户控件,里面有菜单栏。我的想法是,我可以对菜单的按钮进行一次编码,并且通过菜单的所有表单都是相同的。菜单有两种类型:一种用于主窗体,另一种用于所有其他窗体。 MainMenuStrip控件有this.findForm().hide()而不是close()dispose()行,所以编程。保持开放,这是唯一的区别。

问题在于:

  • 在主窗体上,菜单(MainMenuStrip)效果很好。它导航到其他形式,退出应用程序......它应该做的一切。
  • 其余表单(KKRMenuStrip)的菜单绝对没有任何效果。
  • 即使代码完全相同的“退出”功能也无效。
  • 我终于完全复制了主菜单中的代码,希望我在代码中遗漏了一些重要的区别,但没有任何改变。
  • 我已经检查了表单本身控件的设置,它们之间没有区别。
  • 另外,我尝试在一个表单上用KKRMenuStrip切换MainMenuStrip,并且,看,它运作得很好。
  • 我注意到的另一件事是,在调试期间,使用KKRMenuStrip,我必须在子菜单打开之前两次单击一个菜单项,几乎就像在它激活之前必须选择它一样。 MainMenuStrip
  • 不会发生这种情况

不确定要包含哪些代码,因为我不知道问题出在哪里,但这里是“退出”功能,以及每个控件的一个导航功能的示例。导航功能非常能说明所有导航功能的编码方式。

来自MainMenuStrip

private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    {
        DialogResult dlg = MessageBox.Show("Are you sure you want to exit?", "Exit Application", MessageBoxButtons.YesNo);
        if (dlg == DialogResult.Yes)
        {
            Application.Exit();
        }
    }

    private void newCustomerToolStripMenuItem_Click(object sender, EventArgs e)
    {
        NewCustomer c = new NewCustomer();
        c.Show();
        this.TopLevelControl.Hide();
    }

来自KKRMenuStrip

    private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    {
        DialogResult dlg = MessageBox.Show("Are you sure you want to exit?", "Exit Application", MessageBoxButtons.YesNo);
        if (dlg == DialogResult.Yes)
        {
            Application.Exit();
        }
    }

    private void newCustomerToolStripMenuItem_Click(object sender, EventArgs e)
    {
        NewCustomer c = new NewCustomer();
        c.Show();
        Form tmp = this.findForm();
        tmp.Close();
        tmp.Dispose();
    }

非常感谢任何帮助。

0 个答案:

没有答案