Элементы и подпункты контекстного меню - PullRequest
0 голосов
/ 02 сентября 2011

У меня есть ContextMenuStrip внутри формы.

Почему-то я хочу изменить все элементы контекстного меню одновременно. Итак, я написал этот код:

int a = 0; 

foreach (ToolStripItem co in contextMenuStrip1.Items)  
{     
 co.Text = "Menu" + a.ToString();
  a++;
  }

Но хотя основные пункты успешно меняются, подпункты не меняются Так как же мне получить доступ к этим подпунктам?

PS: я не могу добавить изображение, потому что я новичок в этом форуме, чтобы понять, что я имею в виду, надеюсь, вы поняли идею.

Спасибо!

Ответы [ 3 ]

4 голосов
/ 02 сентября 2011

Вам необходимо привести к ToolStripDropDownItem и проверить свойство DropDownItems. И, конечно, обновить его рекурсивно.

вот образец:

public void ChangeMenuItemsNames(ToolStripItemCollection collection)
    {
        foreach (ToolStripMenuItem item in collection)
        {
            item.Name = "New Name";

            if (item is ToolStripDropDownItem)
            {
                ToolStripDropDownItem dropDownItem = (ToolStripDropDownItem)item;

                if (dropDownItem.DropDownItems.Count > 0)
                {
                    this.ChangeMenuItemsNames(dropDownItem.DropDownItems);
                }
            }
        }
    }

Как использовать:

   this.ChangeMenuItemsNames(this.contextMenuStrip1.Items);
0 голосов
/ 02 сентября 2011
  void ChangeName(ToolStripItemCollection collection, ref int a)
    {
        foreach (ToolStripItem co in collection)
        {
            co.Text = "Menu" + a.ToString();
            a++;
            if (co is ToolStripDropDownItem)
            {
                ToolStripDropDownItem ts = co as ToolStripDropDownItem;
                if (ts.DropDownItems != null) ChangeName(ts.DropDownItems, ref a);
            }
        }
    }
0 голосов
/ 02 сентября 2011

Так как в соответствии с MSDN, ToolStripButton, ToolStripLabel, ToolStripSeparator, ToolStripControlHost, ToolStripDropDownItem, ToolStripStatusLabel наследуются от ToolStripItem, вы можете попробовать выполнить приведение с помощью оператора as, а затем установить его текстовое свойство, а также установить это текстовое свойство.

НадеждаВы просите.

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