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

时间:2009-10-22 15:39:33

标签: c# winforms menustrip

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

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

编辑:如何以编程方式调用Busquedas Recientes文件夹(图中)

alt text

2 个答案:

答案 0 :(得分:10)

您可以通过利用事件处理程序中的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);
}

答案 1 :(得分:5)

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

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