Toolstripmenuitem подпункт - двойные записи
Я пытаюсь добавить обработчик событий в мои выпадающие элементы панели инструментов. В настоящее время, когда я добавляю обработчик события, каждый раз, когда событие срабатывает, выпадающие элементы дублируются.
Мои пункты меню - это проекты, и у каждого проекта может быть несколько задач. Когда пользователь нажимает на задачу, запускается обработчик событий, у которого есть метод, который начинает отслеживать время. Это также создает новый пункт меню, чтобы остановить таймер.
Как я могу настроить свой код для предотвращения дублирования элементов?
Заранее спасибо Джейсон
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 { }
}