你好我有一个带有“收藏夹”菜单的ToolStripMenu,我想在运行时在我的WinForms应用程序中添加子项。我有一个datagridview,我右键单击以显示具有“添加到收藏夹”选项的上下文菜单。当该事件被触发时,我想使用datagriview中的所选行中的一些文本添加一个项目(我知道该怎么做)到这个收藏夹菜单。棘手的部分是我需要为我的newlyCreatedToolStripMenuItem_Click
事件创建代码。我将在稍后确定如何保存我的收藏夹列表。
所以我们要去:
右键单击datagridview
行“John Smith”
从ContextMenu
收藏夹ToolStripMenu
添加了一个新项目,内容为“John Smith”
单击“John Smith”ToopStripMenuItem
将触发一个动作(例如在daragridview行中选择该行等)
有什么好的开始想法吗?
答案 0 :(得分:12)
如果我理解你的话,我想这正是你想要的:
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();
}
答案 1 :(得分:4)
这很简单。
您只需设置一个用于所有收藏夹ToolStripMenuItem
的回调方法。
在此方法中,您可以比较item.Text
或item.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);
}