-->

在运行时添加项目的ToolStrip(Adding Items to ToolStrip at Ru

2019-09-17 07:14发布

你好,我有一个ToolStripMenu与“收藏”菜单,我想在运行时我的WinForms应用程序过程中添加的子项。 我有一个DataGridView,我右击表明,有一个“添加到收藏夹”选项的上下文菜单。 当该事件被触发,我想从所选行从datagriview添加使用也许一些文本的项目(这个我知道该怎么做已经)到这个收藏夹菜单。 最棘手的部分是到我需要为我创建代码newlyCreatedToolStripMenuItem_Click事件。 我决定以后该怎么救我的收藏夹列表。

所以,我们要为:

右键点击datagridview行为“约翰·史密斯”

选择“添加到收藏夹”从ContextMenu

收藏ToolStripMenu中添加了一个新的项目,上面写着“约翰·史密斯”

点击“约翰·史密斯” ToopStripMenuItem触发一个动作(如daragridview行中选择该行,等等)

任何好的起点想法?

Answer 1:

如果我理解你的权利,我想这是你想要什么:

    private void buttonAddFav_Click(object sender, EventArgs e)
    {
        ToolStripItem item = new ToolStripMenuItem();
        //Name that will apear on the menu
        item.Text = "Jhon Smith";
        //Put in the Name property whatever neccessery to retrive your data on click event
        item.Name = "GridViewRowID or DataKeyID";
        //On-Click event
        item.Click += new EventHandler(item_Click);
        //Add the submenu to the parent menu
        favToolStripMenuItem.DropDownItems.Add(item);
    }

    void item_Click(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }


Answer 2:

这是很简单的。 你只需要安装其用于所有喜爱的回调方法ToolStripMenuItem的。 在这种方法中,你比较item.Textitem.Name属性和执行的不同喜爱的方法。

private void FavoriteToolStriptem_Click(object sender, EventArgs e) {
    ToolStripMenuItem item = sender as ToolStripMenuItem;
    MessageBox.Show("You clicked on the menu item called " + item.Name + " shown as " + item.Text);
}


文章来源: Adding Items to ToolStrip at RunTime