2017-04-15 104 views
-1

我有一个问题,通过查找目录中的文件添加项目。 此脚本有效。如何添加MenuStripItems与图像动态

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 

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

回答

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 
+0

工作!非常感谢你。 –

-1

那么,上面的方式应该做的工作。不过,我建议你在将项目添加到容器之前添加处理程序。它看起来更好,更容易阅读/调试。顺便说一下,我知道VB.net有一个“With”前缀,有点像使用...我会用它,如果我是你,如果你不介意一个好心态的建议(或者你重写了该代码特别为stackoverflow来帮助别人理解你的代码?如果是这样 - >没关系)。

+0

考虑将代码添加到您的答案中以备份您正在说的内容,或者如果它旨在作为对其他答案的评论,请考虑等到您有相关代表这样做。我很感谢你必须付出一些努力才能达到目标,但就现实而言,这并非真正的答案。 – Bugs

+0

@Bugs:对于一个很好的建议,在stackoverflow上向新手们感谢。我会在我的下一个答案中考虑它。我从不介意惹恼某个人,只是尽可能在没有任何代码编辑器的情况下尽力提供帮助,但是在那里它是 - 直接的倒退。好的,下次比...... –