C#从表单中的usercontrol控制表单中的菜单条

时间:2017-01-18 19:53:10

标签: c# forms user-controls

我有一个Windows窗体应用程序,它有一个Form(form1),一个menustrip(menustrip1)和一个usercontrol(usercontrol1)。我编写的代码将用户控件加载到这样的表单中。     UserControl1 UC = new UserControl1(); UC.Dock = DockStyle.Fill; this.Controls.Clear(); UC.Controls.Add(menuStrip1); this.Controls.Add(UC); 然后当加载UC时,我想添加菜单项并处理它们的事件。问题是当我使用此代码添加项目时它不起作用但不会出错。我做错了还是我不能以这种方式与menustrip互动。

menuStrip1.Items.Remove(fileToolStripMenuItem); ToolStripMenuItem Save = new ToolStripMenuItem("Save", null, saveToolStripMenuItem_Click); fileToolStripMenuItem.DropDownItems.Add(Save);

2 个答案:

答案 0 :(得分:0)

Gunnerone拥有它。保留菜单条和表单中的所有事件。在menustripclick添加与特定用户控件相关的菜单项。在UC调用中,为操作定义一个公共方法,并从表单中调用它。这很简单,我一直在思考这个问题。

答案 1 :(得分:0)

完全不同意你的方法......

假设" menuStrip1"被放置在主窗体上并具有完全名称,当您将其添加到UserControl时,您可以访问它"按名称"在Load()事件中像这样:

    private void UserControl1_Load(object sender, EventArgs e)
    {
        MenuStrip menu = this.Controls["menuStrip1"] as MenuStrip;

        ToolStripMenuItem File = new ToolStripMenuItem("File", null, fileToolStripMenuItem_Click);
        menu.Items.Add(File);
        ToolStripMenuItem Save = new ToolStripMenuItem("Save", null, saveToolStripMenuItem_Click);
        File.DropDownItems.Add(Save);
    }

还有一种方法可以添加到工具条菜单中的现有文件中,还是必须从头开始?

假设"文件"已经被放置在主菜单上并且完全命名为" fileToolStripMenuItem",这将与上面已经接受的代码非常相似。但是,我们不是访问this.Controls(),而是像这样访问menu.Items()

        MenuStrip menu = this.Controls["menuStrip1"] as MenuStrip;
        ToolStripMenuItem File = menu.Items["fileToolStripMenuItem"] as ToolStripMenuItem;

        ToolStripMenuItem Save = new ToolStripMenuItem("Save", null, saveToolStripMenuItem_Click);
        File.DropDownItems.Add(Save);