如何动态添加MenuStripItems与图像

时间:2017-04-15 15:20:17

标签: vb.net winforms

我有一个问题是通过查找目录中的文件来添加项目。 这个脚本有效。

Private Sub LoadAddItemsToEditMenu(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    For Each dir As String In Directory.GetDirectories(".\MenuItems\Edit")
        Dim mainMenuItem As New ToolStripMenuItem(IO.Path.GetFileName(dir))

        For Each fn As String In Directory.GetFiles(dir)

            Dim subMenuItem As New ToolStripMenuItem(IO.Path.GetFileNameWithoutExtension(fn))

                subMenuItem.Tag = fn

            EditToolStripMenuItem.DropDownItems.Add(subMenuItem)

            AddHandler subMenuItem.Click, AddressOf EditExtendetItem_Click
        Next
    Next
End Sub

我还需要调整添加到文件图片中的每个项目。

2 个答案:

答案 0 :(得分:1)

我不知道你是否要求这一点,下面的代码在每个项目上添加了一个文件图标。我希望这适合你:

Private Sub LoadAddItemsToEditMenu(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

For Each dir As String In Directory.GetDirectories(".\MenuItems\Edit")
    Dim mainMenuItem As New ToolStripMenuItem(IO.Path.GetFileName(dir))

    For Each fn As String In Directory.GetFiles(dir)

        Dim subMenuItem As New ToolStripMenuItem(IO.Path.GetFileNameWithoutExtension(fn))

            subMenuItem.Tag = fn
            subMenuItem.Image = System.Drawing.Icon.ExtractAssociatedIcon(fn).ToBitmap

            EditToolStripMenuItem.DropDownItems.Add(subMenuItem)

        AddHandler subMenuItem.Click, AddressOf EditExtendetItem_Click
    Next
Next
End Sub

答案 1 :(得分:-1)

嗯,上面的方式应该可以胜任。但是,我建议您在将项目添加到容器之前添加处理程序。它看起来更好,更容易阅读/调试。顺便说一句,我知道VB.net有一个" With"前缀,有点类似于使用...我会使用它,如果我是你,如果你不介意一个好心灵的建议(或你是否重写了代码特别是stackoverflow,以帮助其他人了解你的代码?如果是这样的话? - >没关系。)