简体   繁体   English

C#:如何在运行时添加下拉菜单项

[英]c#: How do i add dropdown menu items at runtime

When creating a new project, i want this project to become available from a dropdown. 创建新项目时,我希望该项目从下拉列表中可用。 The first project i create, works, and is placed as the menu item as well as a dropdown item, however when i try to add the next dropdown item it crashes and tells me "Object reference not set to an instance of an object." 我创建,工作并作为菜单项和下拉菜单项放置的第一个项目,但是,当我尝试添加下一个下拉菜单项时,它崩溃并告诉我“对象引用未设置为对象的实例”。

This line creates the exception: ProjectToolStripMenuItem.DropDownItems.Add(newproject); 此行创建异常: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);
}

ToolStripMenuItem ProjectToolStripMenuItem = null; ToolStripMenuItem ProjectToolStripMenuItem = null;

Should have been declared outside the method. 应该已经在方法之外声明了。 Sorry for the inconvinience. 很抱歉给您带来不便。

/Thomas /托马斯

Your ProjectToolStripMenuItem is set to null and it only gets assigned a value if the projects.Count is equal to zero. 您的ProjectToolStripMenuItem设置为null,并且仅在projects.Count等于零时才被分配一个值。 This is why you get the null reference exception for the second project. 这就是为什么您为第二个项目获得空引用异常的原因。 Since projects.Count is not zero, ProjectToolStripMenuItem never gets assigned. 由于projects.Count不为零,因此永远不会分配ProjectToolStripMenuItem。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM