-->

如何添加东西到的MenuStrip编程?(How to add things to a menust

2019-08-31 11:42发布

我想补充无论是写在一个文本框到的MenuStrip。 在文件>最近搜索的东西我都有。

我该怎么办编程? 而且我可以动态分配的事件处理程序,这样,当在该子文件夹X项目的用户点击,文本回到文本复制?

编辑:我如何编程在文件夹上调用Busquedas Recientes(在图)

Answer 1:

您可以通过采取优势做这个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);
}


Answer 2:

这是相当直截了当。 你可以做到以下几点:

ToolStripMenuItem menuItem

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

随后,如果Click事件不工作(我有麻烦的地方就无法检测到正确的菜单项),您可以在“DropDownItemClicked”事件添加到菜单项。 并获得该项目的文本,你点击你这样做:

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

我希望帮助。

哦,别忘了删除事件也是如此。 我忘了做这一切我已经创造并以某种方式结束了吃了一半的内存的动态菜单。 :d



文章来源: How to add things to a menustrip programatically?