2017-04-15 4 views
-1

Ich habe eine Frage zum Hinzufügen von Elementen, indem ich die Datei im Verzeichnis finde. Dieses Skript funktioniert.So fügen Sie MenuStripItems dynamisch mit Bildern hinzu

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 

Ich muss immer noch auf jedes Element zu einem Bild der Datei hinzugefügt stimmen.

Antwort

1

Ich weiß nicht, ob Sie genau danach fragen, der folgende Code fügt ein Symbol der Datei auf jedem Element hinzu. Ich hoffe, das funktioniert für Sie:

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

Funktioniert! Vielen Dank. –

-1

Nun, der obige Weg sollte die Aufgabe erledigen. Ich würde Ihnen jedoch empfehlen, den Handler hinzuzufügen, bevor Sie das Element dem Container hinzufügen. Es sieht besser aus und ist einfacher zu lesen/zu debuggen. Übrigens weiß ich, dass VB.net ein "With" -Präfix hat, ein bisschen vergleichbar mit dem Verwenden ... Ich würde es verwenden, wenn ich du wäre und wenn es dir nichts ausmacht, einen guten Gedanken zu haben (oder hast du es umgeschrieben) der Code speziell für stackoverflow, um anderen zu helfen, Ihren Code zu verstehen? Wenn ja -> egal.

+0

Erwägen Sie, Code zu Ihrer Antwort hinzuzufügen, um zu sichern, was Sie sagen, oder wenn es ein Kommentar zu der anderen Antwort sein soll, überlegen Sie zu warten, bis Sie den entsprechenden Vertreter dazu haben. Ich weiß es zu schätzen, dass du ein bisschen arbeiten musst, um dorthin zu kommen, aber so wie es aussieht, ist das nicht wirklich und antworte. – Bugs

+0

@Bugs: Vielen Dank für einen guten Rat an einen Neuling auf Stackoverflow. Ich werde es in meiner nächsten Antwort berücksichtigen. Es macht mir nichts aus, jemanden zu ärgern, ich habe einfach versucht, so weit ich konnte, ohne Code-Editor auf meinem Handy zu helfen, aber da ist es - ein direkter Downvote. Ok, nächstes Mal als ... –

Verwandte Themen