Получить элемент управления Windows Forms по имени в C # - PullRequest
54 голосов
/ 08 октября 2009

У меня есть ToolStripMenuItem под названием «myMenu». Как я могу получить доступ к этому так:

/* Normally, I would do: */
this.myMenu... etc.

/* But how do I access it like this: */
String name = myMenu;
this.name...

Это потому, что я динамически генерирую ToolStripMenuItems из XML-файла и мне нужно ссылаться на элементы меню по их динамически генерируемым именам.

Ответы [ 13 ]

0 голосов
/ 26 июня 2016

Простым решением было бы перебрать список Controls в цикле foreach. Примерно так:

foreach (Control child in Controls)
{
    // Code that executes for each control.
}

Итак, теперь у вас есть итератор, child, который имеет тип Control. Теперь сделайте то, что вы будете делать с этим, лично я нашел это в проекте, который я делал недавно, в котором он добавил событие для этого элемента управления, например:

child.MouseDown += new MouseEventHandler(dragDown);
0 голосов
/ 08 октября 2009

Вы можете сделать следующее:

private ToolStripMenuItem getToolStripMenuItemByName(string nameParam)
   {
      foreach (Control ctn in this.Controls)
         {
            if (ctn is ToolStripMenuItem)
               {
                   if (ctn.Name = nameParam)
                      {
                         return ctn;
                      }
                }
         }
         return null;
    }
0 голосов
/ 08 октября 2009

Посмотрите на коллекцию ToolStrip.Items. У него даже есть метод поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...