问题描述
- 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
解决方案
你需要确定究竟是newmenu.DropDownItems[j]为null还是newmenu.DropDownItems[j].Tag为null
解决方案二:
newmenu.DropDownItems[j].Tag为null,j的值为0
时间: 2024-10-28 10:00:14