toolstripmenuitem subitem - 双重条目

时间:2011-02-23 18:43:49

标签: c# .net winforms toolstripitem

我正在尝试向我的工具条的dropdownitems添加一个事件处理程序。目前,当我添加事件处理程序时,每次触发事件时,都会重复下拉列表。

我的工具条菜单项是项目,每个项目可以有多个任务。当用户单击任务时,将触发事件处理程序,该处理程序具有开始跟踪时间的方法。这也会创建一个新的菜单项来停止计时器。

如何配置代码以防止重复项?

提前致谢, 杰森

private void SetupMenu()
{
    ctxMainMenu.Items.Clear();

    //ctxMainMenu.Refresh();
    _workItemValid = false;

    ToolStripMenuItem newMenu = null;

    if (_currentWorkItemID > 0)
    {
        newMenu = new ToolStripMenuItem("Stop Working On WorkItem:" + _currentWorkItemID);
        ctxMainMenu.Items.Add(newMenu);
        ctxMainMenu.Refresh();
    }

    try
    {
        //ctxMainMenu.Refresh();
        foreach (string projectName in checkedProjects.Items)
        {

            newMenu = new ToolStripMenuItem(projectName);
            //clear the menu before building a new one
            newMenu.DropDown.Items.Clear();
            ctxMainMenu.Refresh();
            newMenu.DropDownItems.AddRange(GetWorkItemMenuesForProject(projectName));
            //newMenu.DropDownItemClicked += new ToolStripItemClickedEventHandler(newMenuItem_DropDownItemClicked);
            ctxMainMenu.Items.Insert(0, newMenu);

        }
    }
    catch
    {
    }
}

private void newMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    try
    {
        if (e.ClickedItem.Text.Contains("Stop Working"))
        {
            StopWork();
        }
        else
        {
            if (_currentWorkItemID > 0)
            {
                SwitchToWorkItemTo(int.Parse(e.ClickedItem.Text.Split(':')[0].ToString()));
            }
            else
            {
                _currentWorkItemID = int.Parse(e.ClickedItem.Text.Split(':')[0].ToString());
                StartWork(_currentWorkItemID);
            }
        }
        ctxMainMenu.Refresh();
    }
    catch { }
}

0 个答案:

没有答案