c #: как добавить элементы выпадающего меню во время выполнения - PullRequest
1 голос
/ 27 сентября 2010

При создании нового проекта я хочу, чтобы этот проект стал доступен из раскрывающегося списка.Первый проект, который я создаю, работает и помещается как элемент меню, а также как элемент раскрывающегося списка, однако, когда я пытаюсь добавить следующий элемент раскрывающегося списка, он вылетает и сообщает мне «Ссылка на объект не установлена ​​для экземпляра объекта».

Эта строка создает исключение: ProjectToolStripMenuItem.DropDownItems.Add (newproject);

ArrayList projects = new ArrayList();

private void toolStripMenuItem1_Click(object sender, EventArgs e)
{    
   Project moldProject = new Project();    
   moldProject.ProjectName = "unnamed";

   ToolStripMenuItem ProjectToolStripMenuItem = null;

   if (projects.Count == 0)
   {
       ProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();

       ProjectToolStripMenuItem.Name = "projectToolStripMenuItem";
       ProjectToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
       ProjectToolStripMenuItem.Text = "unnamed*";

       this.menuStrip1.Items.Add(ProjectToolStripMenuItem);
   }

   ToolStripMenuItem newproject = new System.Windows.Forms.ToolStripMenuItem();

   string name = "aboutToolStripMenuItem" + (projects.Count + 1).ToString();
   newproject.Name = name;

   newproject.Size = new System.Drawing.Size(211, 22);
   newproject.Text = "unnamed*";

   ProjectToolStripMenuItem.DropDownItems.Add(newproject);

   projects.Add(moldProject);
}

Ответы [ 2 ]

0 голосов
/ 27 сентября 2010

Ваш ProjectToolStripMenuItem имеет значение NULL, и ему присваивается значение, только если projects.Count равно нулю. Вот почему вы получаете исключение нулевой ссылки для второго проекта. Так как projects.Count не равно нулю, ProjectToolStripMenuItem никогда не назначается.

0 голосов
/ 27 сентября 2010

ToolStripMenuItem ProjectToolStripMenuItem = null;

Должно быть объявлено вне метода.Извините за неудобства.

/ Томас

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