2 u014407929 u014407929 于 2014.05.28 09:15 提问

treeView 动态显示菜单 未将对象引用设置到对象的实例

#region 将MenuStrip控件中的信息添加到treeView控件中
///
/// 读取菜单中的信息.
///
/// TreeView控件
/// MenuStrip控件
public void GetMenu(TreeView treeV, MenuStrip MenuS)
{
for (int i = 0; i < MenuS.Items.Count; i++) //遍历MenuStrip组件中的一级菜单项
{
//将一级菜单项的名称添加到TreeView组件的根节点中,并设置当前节点的子节点newNode1
TreeNode newNode1 = treeV.Nodes.Add(MenuS.Items[i].Text);
newNode1.Tag = 0;
//将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
ToolStripDropDownItem newmenu = (ToolStripDropDownItem)MenuS.Items[i];
//判断当前菜单项中是否有二级菜单项
if (newmenu.HasDropDownItems && newmenu.DropDownItems.Count > 0)
for (int j = 0; j < newmenu.DropDownItems.Count; j++) //遍历二级菜单项
{
//将二级菜单名称添加到TreeView组件的子节点newNode1中,并设置当前节点的子节点newNode2
TreeNode newNode2 = newNode1.Nodes.Add(newmenu.DropDownItems[j].Text);
newNode2.Tag = int.Parse(newmenu.DropDownItems[j].Tag.ToString()); // 未将对象引用设置到对象的实例。
//将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
ToolStripDropDownItem newmenu2 = (ToolStripDropDownItem)newmenu.DropDownItems[j];
}
}
}
#endregion

2个回答

critas
critas   2014.05.28 10:57

你需要确定究竟是newmenu.DropDownItems[j]为null还是newmenu.DropDownItems[j].Tag为null

u014407929
u014407929 newmenu.DropDownItems[j].Tag为null,j的值为0,我是复制教材上面的代码,但是自己的就出现这个问题
大约 4 年之前 回复
u014407929
u014407929   2014.05.28 11:00

newmenu.DropDownItems[j].Tag为null,j的值为0

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!