MenuStrip菜加
我在想加菜
教怎么做
menumain.Items.Clear();
ToolStripMenuItem menutola = new ToolStripMenuItem();
ToolStripMenuItem menutol1 = new ToolStripMenuItem();
ToolStripMenuItem menutol2 = new ToolStripMenuItem();
ToolStripMenuItem menuto3 = new ToolStripMenuItem();
ToolStripMenuItem menutol4 = new ToolStripMenuItem();
ToolStripMenuItem menutol5 = new ToolStripMenuItem();
for (int i = 0; i <= arrary.GetUpperBound(0); i++)
{
if (arrary[i, 1] == " " || arrary[i, 1] == null)
{ }
else
{
System.Windows.Forms.TreeNode tn = new System.Windows.Forms.TreeNode(arrary[i, 1]);
tn.Tag = arrary[i, 0];//菜代 arrary[i, 1]名 arrary[i, 2]
//menutola.Text = "JokevinHr ";
//menumain.Items.Add(menutola);
switch(arrary[i,2])
{
case "1 ":
menutol1 = menutola;
menumain.Items.Add(arrary[i, 1]);
break;
case "2 ":
trpa.Nodes.Add(tn);
trpb = tn;
trpb.Expand();
//ToolStripMenuItem menutol2 = new ToolStripMenuItem();
//menutol2.Text = tn.Text;
menutol1.DropDownItems.Add(arrary[i, 1]);
break;
case "3 ":
menutol2.DropDownItems.Add(arrary[i, 1]);
break;
case "4 ":
break;
case "5 ":
break;
case "6 ":
break;
default:
break;
}
}
}
[解决办法]
动态增加菜单的一个例子(不完全),但已可用,希望对你有帮助!
#Region "-------- 从 DB 中取得有关 Menu 的记录,并产生本功能的 Menu -------- "
' ' ' <summary>
' ' ' 检查是否有相关的Menu 设定,如有,则建立
' ' ' </summary>
' ' ' <remarks> </remarks>
Private Sub CreateMenu()
Dim dtMenu As DataTable
dtMenu = oECSGen.getDT_MenuItem(c_PorgramID)
If dtMenu.Rows.Count = 0 Then Exit Sub
Dim mnuForm As New MenuStrip
Dim dtMenuRoot As DataTable
Dim iMenuID As Integer
dtMenuRoot = oECSGen.getDT_MenuItem_byID(c_PorgramID, 0)
If dtMenuRoot.Rows.Count = 0 Then Exit Sub
' 增加第一级Menu
For i As Int16 = 0 To dtMenuRoot.Rows.Count - 1
Dim tsmItem As New ToolStripMenuItem(dtMenuRoot.Rows(i).Item( "Item_Text ").ToString)
' 增加其下的所有级别的 Menu Item
iMenuID = dtMenuRoot.Rows(i).Item( "Item_ID ")
createNestMenuItem(tsmItem, iMenuID)
mnuForm.Items.Add(tsmItem)
Next
mnuForm.Dock = DockStyle.Top
Me.MainMenuStrip = mnuForm
Me.Controls.Add(mnuForm)
End Sub
' ' ' <summary>
' ' ' 嵌套产生一个Top Level 菜单项下所有级别的菜单项
' ' ' </summary>
' ' ' <param name= "tsmParentItem "> 父菜单项 </param>
' ' ' <param name= "iParentID "> 父菜单ID </param>
' ' ' <remarks> </remarks>
Private Sub createNestMenuItem(ByVal tsmParentItem As ToolStripMenuItem, ByVal iParentID As Integer)
Dim dtMenuLevel As DataTable
Dim iMenuID As Integer
dtMenuLevel = oECSGen.getDT_MenuItem_byID(c_PorgramID, iParentID)
If dtMenuLevel.Rows.Count > 0 Then
For j As Int16 = 0 To dtMenuLevel.Rows.Count - 1
Dim tsmItemLevel As New ToolStripMenuItem(dtMenuLevel.Rows(j).Item( "Item_Text ").ToString, Nothing, New EventHandler(AddressOf OnMenuItem_Click), dtMenuLevel.Rows(j).Item( "Item_Name ").ToString)
tsmParentItem.DropDownItems.Add(tsmItemLevel)
iMenuID = Val(dtMenuLevel.Rows(j).Item( "Item_ID "))
createNestMenuItem(tsmItemLevel, iMenuID)
Next
End If
End Sub
' ' ' <summary>
' ' ' 处理对应 Menu Item 的单击事件,根据其对应的名称
' ' ' </summary>
' ' ' <remarks> 此处理过程必须要根据对应的Menu Item 写对应的处理事件 </remarks>
Private Sub OnMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim sItemName As String = CType(sender, ToolStripMenuItem).Name.Trim.ToLower
Select Case sItemName
Case "mnufile_save " ' Menu : File
Toolbar_Click( "Save ")
Case "mnufile_cancel "
Toolbar_Click( "Undo ")
Case "mnufile_exit "
Toolbar_Click( "Exit ")
Case "mnuedit_copy " ' Menu : Edit
Case "mnuedit_paste "
Case "mnurecord_add " ' Menu : Record
Toolbar_Click( "Add ")
Case "mnurecord_edit "
Toolbar_Click( "Edit ")
Case "mnurecord_delete "
Toolbar_Click( "Delete ")
Case "mnurecord_copy "
Toolbar_Click( "Copy ")
Case "mnuOther " ' Menu : Other
Case " "
Case " " ' Menu : Window
Case " " ' Menu : Help
Case Else
End Select
End Sub
#End Region
[解决办法]
mark