Динамически добавлять SubMenuItems в SubMenu - PullRequest
1 голос
/ 30 января 2020

У меня есть c# полоса меню с элементами меню верхнего уровня (элементы TLM). Я динамически добавляю элементы к одному из элементов TLM следующим образом, что прекрасно работает.

DataRowCollection DRC = DataAccessClass.GetData("SELECT * FROM company ORDER BY CompanyName");
ToolStripMenuItem[] items = new ToolStripMenuItem[DRC.Count];
int itemCounter = 0;
foreach (DataRow dr in DRC)
{
  string nm = dr["companyname"].ToString();
  int id = Convert.ToInt16(dr["companyid"].ToString());
  items[itemCounter] = new ToolStripMenuItem();
  items[itemCounter].Name = string.Format("menuitem{0}", itemCounter);
  items[itemCounter].Text = nm;
  items[itemCounter].Click += new EventHandler(MenuItemClickHandler);
  itemCounter++;
}

CompanyToolStripMenuItem.DropDownItems.AddRange(items);

Как только этот TLM заполнен, я хочу динамически добавлять элементы подменю к каждому из динамических c пункты меню, созданные выше. Я также создаю массив ToolStripMenuItems, как описано выше, и пытаюсь добавить их в пункт меню, используя это, показанное здесь для первого пункта меню:

CompanyToolStripMenuItem.DropDownItems[0].DropDownItems.AddRange(submenuitems);

Но это не работает. Есть идеи?

Когда я добавляю CompanyToolStripMenuItem.DropDownItems [0] в окно наблюдения, оно показывает свойство DropDownItems. Когда я пытаюсь ввести его, раскрывающийся список автозаполнения не предоставляет свойство как опцию.

1 Ответ

1 голос
/ 03 февраля 2020

Попробуйте привести выбранный элемент DropDownItem к ToolStripMenuItem:

((ToolStripMenuItem)CompanyToolStripMenuItem.
    DropDownItems[0]).DropDownItems.AddRange(submenuitems);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...