Как получить динамически созданный ToolStripMenuItem по имени в приложении Windows? - PullRequest
0 голосов
/ 22 декабря 2018

Форма 2:

private ToolStripMenuItem mHelp;
private ToolStripMenuItem apProposToolStripMenuItem;
public void intializecomponent()
{
this.mHelp = new ToolStripMenuItem();
      this.contentsToolStripMenuItem = new ToolStripMenuItem();
      this.apProposToolStripMenuItem = new ToolStripMenuItem();
     this.mHelp.DropDownItems.AddRange(new ToolStripItem[2]
          {
            (ToolStripItem) this.contentsToolStripMenuItem,
            (ToolStripItem) this.apProposToolStripMenuItem
          });
          this.mHelp.Name = "mHelp";
          this.mHelp.Size = new Size(44, 20);
          this.mHelp.Text = "Help";
          this.contentsToolStripMenuItem.Name = "contentsToolStripMenuItem";
          this.contentsToolStripMenuItem.Size = new Size(122, 22);
          this.contentsToolStripMenuItem.Text = "Contents";
          this.contentsToolStripMenuItem.Click += new EventHandler(this.contentsToolStripMenuItem_Click);
          this.apProposToolStripMenuItem.Image = (Image) componentResourceManager.GetObject("apProposToolStripMenuItem.Image");
          this.apProposToolStripMenuItem.Name = "apProposToolStripMenuItem";
          this.apProposToolStripMenuItem.Size = new Size(122, 22);
          this.apProposToolStripMenuItem.Text = "About";
          this.apProposToolStripMenuItem.Click += new EventHandler(this.apProposToolStripMenuItem_Click);
    this.Load += new EventHandler(this.DocumentSpace_Load);
}

Как найти apProposToolStripMenuItem в форме?Я пытался удалить конкретный ToolStripMenuItem, но он не работает, и я не могу найти apProposToolStripMenuItem.

Form1:

ToolStripMenuItem mi = new ToolStripMenuItem("apProposToolStripMenuItem") { Name = "About" };
mi.DropDownItems.RemoveByKey("About");

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Предполагая, что у вас есть доступ к MenuStrip или ToolStrip в форме, вы можете использовать метод расширения Descendants, чтобы найти все элементы, независимо от их расположения в иерархии меню иего родительский элемент.например:

var item = menuStrip1.Descendants()
    .Where(x => x.Name == "printToolStripMenuItem").FirstOrDefault();
item?.GetCurrentParent().Items.Remove(item);
0 голосов
/ 22 декабря 2018

Вы можете удалить его по имени следующим образом:

mHelp.DropDownItems.RemoveByKey("apProposToolStripMenuItem");

Вы также можете удалить его прямо так:

var about = mHelp.DropDownItems["apProposToolStripMenuItem"]
mHelp.DropDownItems.Remove(about);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...