如何以编程方式向menustrip添加内容?

我想将文本框中写入的内容添加到menustrip中。 在文件>最近搜索的东西我有。

我怎么能以编程方式做? 我可以动态分配事件处理程序,以便当用户单击该子文件夹中的X项时,文本被复制回文本框吗?

编辑:我怎么能以编程方式调用Busquedas Recientes文件夹(图中)

替代文字

您可以通过利用事件处理程序中的object sender参数来完成此操作。 大部分都是我的头脑,所以我只是猜测它会编译,但它应该让你开始。

 void AddMenuItem(string text, string action) { ToolStripMenuItem item = new ToolStripMenuItem(); item.Text = text; item.Click += new EventHandler(item_Click); item.Tag = action; //first option, inserts at the top //historyMenu.Items.Add(item); //second option, should insert at the end historyMenuItem.DropDownItems.Insert(historyMenuItem.DropDownItems.Count, item); } private void someHistoryMenuItem_Click(object sender, EventArgs e) { ToolStripMenuItem menuItem = sender as ToolStripMenuItem; string args = menuItem.Tag.ToString(); YourSpecialAction(args); } 

这是相当直接的。 您可以执行以下操作:

 ToolStripMenuItem menuItem foreach (string text in collectionOfText) { ToolStripMenuItem foo = new ToolStripMenuItem(text); foo.Click += new EventHandler(ClickEvent); menuItem.DropDownItems.Add(foo); } 

随后,如果Click事件不起作用(我无法检测到正确的菜单项),可以在menuItem中添加“DropDownItemClicked”事件。 并获取您单击的项目的文本:

 private void DropedDownItemClickedEvent(object sender, ToolStripItemClickedEventArgs e) { string text = e.ClickedItem.Text; } 

我希望有所帮助。

哦,不要忘记删除事件。 我忘了用我创造的所有动态菜单做到这一点,不知何故最终吃了一半的记忆。 :d