非常感谢大红袍的回答!代码已经试了。想要实现的目的基本已实现,但还有瑕疵。如下图:
此主题相关图片如下:分割条.png
分割条如何实现?我的菜单中的分割条代码是:Dim OSSplitBar As New System.Windows.Forms.ToolStripSeparator '定义分割条 Split bar
(我找到一个C#的实例然后转换为VB的代码,并引用修改后应用到foxtable中去,出现如下问题)我把c#的代码转换为VB.net代码如下(截取的一小段代码):
以下内容为程序代码:
1 ''' 将MenuStrip控件中的首行命令项添加到TreeView控件中
2 ''' </summary>
3 ''' <param treeV="TreeView">TreeView控件</param>
4 ''' <param MenuS="MenuStrip">MenuStrip控件</param>
5 Public Sub GetMenu(treeV As TreeView, MenuS As MenuStrip)
6 Dim Var_Bool As Boolean = True
7 For i As Integer = 0 To MenuS.Items.Count - 1 '遍历MenuStrip组件中的一级菜单项
8
9 Dim newNode1 As TreeNode = treeV.Nodes.Add(MenuS.Items(i).Text) '将一级菜单项的名称添加到TreeView组件的根节点中,并设置当前节点的子节点newNode1
10
11 If MenuS.Items(i).Enabled = False Then '判断当前项是否为可用
12
13 newNode1.ForeColor = Color.Silver '改变树节点的字体颜色为不可用色
14
15 Var_Bool = False
16 Else
17 newNode1.ForeColor = Color.Black '改变树节点的字体颜色为可用色
18
19 Var_Bool = True
20 End If
21 newNode1.Tag = 0
22 '标识,有子项的命令项
23 '将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
24 Dim newmenu As ToolStripDropDownItem = DirectCast(MenuS.Items(i), ToolStripDropDownItem)
25 '添加多层命令项
26 GetCavernMenu(newNode1, newmenu, Var_Bool)
27 Next
28 End Sub
29
30 ''' <summary>
31 ''' 将MenuStrip控件中的多层命今项添加到TreeView控件中
32 ''' </summary>
33 ''' <param newNodeA="TreeNode">TreeNode对象</param>
34 ''' <param newmenuA="ToolStripDropDownItem">ToolStripDropDownItem对象</param>
35 ''' <param BL="bool">标识(是否可用)</param>
36 Public Sub GetCavernMenu(newNodeA As TreeNode, newmenuA As ToolStripDropDownItem, BL As Boolean)
37 Dim Var_Bool As Boolean = True
38 If newmenuA.HasDropDownItems AndAlso newmenuA.DropDownItems.Count > 0 Then
39 For j As Integer = 0 To newmenuA.DropDownItems.Count - 1
40 '遍历二级菜单项
41 '将二级菜单名称添加到TreeView组件的子节点newNode1中,并设置当前节点的子节点newNode2
42 Dim newNodeB As TreeNode = newNodeA.Nodes.Add(newmenuA.DropDownItems(j).Text)
43 Var_Bool = True
44 If BL = False Then
45 '判断当前命令项的上一级命令是否可用
46 newNodeB.ForeColor = Color.Silver
47 '设置当前命令项的字体颜色为不可用色
48 newNodeB.Tag = 0
49 '标识,不显示相应的窗体
50 Var_Bool = False
51 Else
52 If newmenuA.DropDownItems(j).Enabled = False Then
53 '判断当前命令项是否为可用
54 newNodeB.ForeColor = Color.Silver
55 '设置当前命令项的字体颜色为不可用色
56 newNodeB.Tag = 0
57 '标识,不显示相应的窗体
58 Var_Bool = False
59 Else
60 newNodeA.ForeColor = Color.Black
61 '设置当前命令项的字体颜色为可用色
62 '标识,显示相应的窗体
63 newNodeB.Tag = Integer.Parse(newmenuA.DropDownItems(j).Tag.ToString())
64 End If
65 End If
66 '将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
67 Dim newmenuB As ToolStripDropDownItem = DirectCast(newmenuA.DropDownItems(j), ToolStripDropDownItem)
68 If newmenuB.HasDropDownItems AndAlso newmenuA.DropDownItems.Count > 0 Then
69 '如果当前命令项有子项
70 newNodeB.Tag = 0
71 '标识,有子项的命令项
72 '调用递归方法
73 GetCavernMenu(newNodeB, newmenuB, Var_Bool)
74 End If
75 Next
76 End If
77 End Sub
其中:
Dim newmenu As ToolStripDropDownItem = DirectCast(MenuS.Items(i), ToolStripDropDownItem) '将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
修改为 dimnewmenu as system.windows.forms.ToolStripDropDownItem = DirectCast(MenuS.Items(i), ToolStripDropDownItem) 出现错误 搞不清,具体为什么类?
后面我又在MSDN中查了下关于 ToolStripDropDownItem的用法:
以下内容为程序代码:
1 ' This method shows the drop-down for the first item
2 ' in the form's ToolStrip.
3 Private Sub showButton_Click( _
4 ByVal sender As Object, _
5 ByVal e As EventArgs) _
6 Handles showButton.Click
7
8 Dim item As ToolStripDropDownItem = CType(Me.toolStrip1.Items(0), ToolStripDropDownItem)
9
10 If item.HasDropDownItems Then
11 item.ShowDropDown()
12 End If
13
14 End Sub
然后是分割条能否用转换为vb.net的代码修改,具体如何实现?
代码为:
以下内容为程序代码:
1 If MenuS.Items(i).Enabled = False Then '判断当前项是否为可用
2
3 newNode1.ForeColor = Color.Silver '改变树节点的字体颜色为不可用色
4
5 Var_Bool = False
6 Else
7 newNode1.ForeColor = Color.Black '改变树节点的字体颜色为可用色
8
9 Var_Bool = True
10 End If
请告知
例子上传
[此贴子已经被作者于2015/7/26 14:16:19编辑过]