RickInWestPalmBeach
RickInWestPalmBeach

Reputation: 558

Dynamically add SubMenuItems to a SubMenu

I have a c# menu strip with top-level menu items (TLM items). I am dynamically adding items to one of the TLM items as follows, which works great.

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);

Once this TLM has been populated, I want to dynamically add sub-menu items to each of the dynamic menu items created above. I am similarly creating an array of ToolStripMenuItems as above, and I am trying to add them to a menu item using this, shown here for the first menu item:

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

But it isn't working. Any ideas?

When I add CompanyToolStripMenuItem.DropDownItems[0] to a watch window, it is showing a "DropDownItems" property. When I try to type it in, the auto-complete drop-down isn't exposing the property as an option.

Upvotes: 2

Views: 648

Answers (1)

LarsTech
LarsTech

Reputation: 81610

Try casting the selected DropDownItem item to a ToolStripMenuItem:

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

Upvotes: 1

Related Questions