110,502
社区成员
发帖
与我相关
我的任务
分享
treeView1_AfterSelect
还弹出显示PLC的对话框了。这个问题搞不明白了。private void Form1_Load(object sender, EventArgs e)
{
GetMenu(plcView, menuStrip1);
}
public void GetMenu(TreeView treeV, MenuStrip MenuS)
{
bool Var_Bool = true;
//遍历MenuStrip组件中的一级菜单项
for (int i = 0; i < MenuS.Items.Count; i++)
{
//将一级菜单项的名称添加到TreeView组件的根节点中,并设置当前节点的子节点newNode1
TreeNode newNode1 = treeV.Nodes.Add(MenuS.Items[i].Text);
treeV.ImageIndex = 1;
//判断当前项是否为可用
if (MenuS.Items[i].Enabled == false)
{
//改变树节点的字体颜色为不可用色
newNode1.ForeColor = Color.Silver;
Var_Bool = false;
}
else
{
//改变树节点的字体颜色为可用色
newNode1.ForeColor = Color.Black;
Var_Bool = true;
}
//标识,有子项的命令项
newNode1.Tag = 0;
//将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
ToolStripDropDownItem newmenu = (ToolStripDropDownItem)MenuS.Items[i];
//添加多层命令项
//GetCavernMenu(newNode1, newmenu, Var_Bool);
}
}
public void GetCavernMenu(TreeNode newNodeA, ToolStripDropDownItem newmenuA, bool BL)
{
bool Var_Bool = true;
if (newmenuA.HasDropDownItems && newmenuA.DropDownItems.Count > 0)
{
//遍历二级菜单项
for (int j = 0; j < newmenuA.DropDownItems.Count; j++)
{
//将二级菜单名称添加到TreeView组件的子节点newNode1中,并设置当前节点的子节点newNode2
TreeNode newNodeB = newNodeA.Nodes.Add(newmenuA.DropDownItems[j].Text);
newNodeB.ImageIndex = 3;
Var_Bool = true;
//判断当前命令项的上一级命令是否可用
if (BL == false)
{
//设置当前命令项的字体颜色为不可用色
newNodeB.ForeColor = Color.Silver;
//标识,不显示相应的窗体
newNodeB.Tag = 0;
Var_Bool = false;
}
else
{
//判断当前命令项是否为可用
if (newmenuA.DropDownItems[j].Enabled == false)
{
//设置当前命令项的字体颜色为不可用色
newNodeB.ForeColor = Color.Silver;
//标识,不显示相应的窗体
newNodeB.Tag = 0;
Var_Bool = false;
}
else
{
//设置当前命令项的字体颜色为可用色
newNodeA.ForeColor = Color.Black;
//标识,显示相应的窗体
newNodeB.Tag = int.Parse(newmenuA.DropDownItems[j].Tag.ToString());
}
}
//将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
//继续遍历
ToolStripDropDownItem newmenuB = (ToolStripDropDownItem)newmenuA.DropDownItems[j];
//如果当前命令项有子项
if (newmenuB.HasDropDownItems && newmenuA.DropDownItems.Count > 0)
{
//标识,有子项的命令项
newNodeB.Tag = 0;
//调用递归方法
GetCavernMenu(newNodeB, newmenuB, Var_Bool);
}
}
}
}
protected void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
// Determine by checking the Text property.
//MessageBox.Show(e.Node.Text);
}
}
for (int i = 0; i < MenuS.Items.Count; i++)
{
//将一级菜单项的名称添加到TreeView组件的根节点中,并设置当前节点的子节点newNode1
TreeNode newNode1 = treeV.Nodes.Add(MenuS.Items[i].Text);
if (0 == i)
{
treeV.ImageIndex = 0;
treeV.SelectedImageIndex = 0;
}
else
{
treeV.ImageIndex = 1;
treeV.SelectedImageIndex = 1;
}
//判断当前项是否为可用
if (MenuS.Items[i].Enabled == false)
{
//改变树节点的字体颜色为不可用色
newNode1.ForeColor = Color.Silver;
Var_Bool = false;
}
else
{
//改变树节点的字体颜色为可用色
newNode1.ForeColor = Color.Black;
Var_Bool = true;
}
//标识,有子项的命令项
newNode1.Tag = 0;
//将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
ToolStripDropDownItem newmenu = (ToolStripDropDownItem)MenuS.Items[i];
//添加多层命令项
GetCavernMenu(newNode1, newmenu, Var_Bool);
}
i肯定是从0到4的,但是在treeview中图标都是一样的,而且代码也走到if中去了,为什么图标没有变成0的呢?我很奇怪this.Select();
让窗体获得焦点即可。
可是第二个怎么解决呢?我不想设置选择的image,不管是不是选中图片是一样的