读书人

MenuStrip菜加解决方法

发布时间: 2012-02-21 16:26:23 作者: rapoo

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

读书人网 >C#

热点推荐