Listboxmenu items toevoegen

Status
Niet open voor verdere reacties.

prutjekaas

Gebruiker
Lid geworden
16 jul 2013
Berichten
18
In mijn huidige project moet het mogelijk zijn dat er in een listboxmenu nieuwe items aan het menu toegevoegd worden. Dit lukt mij vrij gemakkelijk met Listbox1Menu.Items.Add() maar ik krijg het niet voor elkaar om deze items dan ook klikbaar te maken omdat er geen sub's zijn voor deze items. Is het mogelijk om via code deze knoppen toch werkzaam te krijgen?
 
Dat kan zo:

Code:
            AddHandler MenuItem.Click, AddressOf MenuItem_Click

En de sub:

Code:
            Public Sub MenuItem_Click(sender As Object, e As EventArgs)
                        MessageBox.Show(DirectCast(sender, ToolStripMenuItem).Text)
            End Sub
 
Bedankt voor het antwoord. Ik krijg het echter nog niet voor elkaar om dit werkende te krijgen omdat het menu zich in een andere form bevindt als de knop waarmee er nieuwe items aan het menu wordt toegevoegd. Ik ben er al een tijdje mee bezig geweest om dit werkende te krijgen maar het lukt me niet. Zou je kunnen aangeven wat ik hierbij anders moet doen?
 
Dan roep je eerst het form aan waar het menu zich bevind:

Code:
AddHandler MenuItem.Click, AddressOf [B]frmMain[/B].MenuItem_Click

Waarbij frmMain de naam van je form is met het menu.
 
Ik had dit ook al geprobeerd maar ik krijg dan een blauwe lijn onder MenuItem.Click met de error: "Reference to a non-shared member requires an object reference."
 
Post eens je code, de code met het menuitem click event en de code waar je de menuitem maakt en toevoegt aan je menu.
 
Sorry voor de erg late reactie. Door iets in mijn persoonlijke leven kon ik mij even niet focussen op VB.

Dit is mijn click event die zich in form3 bevindt:
Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form1.Listbox1Menu.Items.Add("Toevoegen aan: " + playlist)
        AddHandler MenuItem.Click, AddressOf Form1.MenuItem_Click
    End Sub
End Class

Dit is de code in Form1 die jij gegeven heb. Hier heb ik nog niks mee gedaan omdat ik eerst die error in form3 weg wil hebben.
Code:
Public Sub MenuItem_Click(ByVal sender As Object, ByVal e As EventArgs)
        MessageBox.Show(DirectCast(sender, ToolStripMenuItem).Text)
    End Sub

Nu ik het nog eens bekijk neem ik aan dat die addhandler gewoon in form1 hoort te staan maar ik krijg eigenlijk overal dezelfde error: "Reference to a non-shared member requires an object reference."
 
Laatst bewerkt:
Sorry, maar ik was ook niet aan het opletten. :P

Items in een ListBox hebben geen clickevent, ook niet wanneer je de items toevoegt in de designer. Wat je wel kan doen is d.m.v. een button iets doen met de/het geselecteerde listbox item(s). Dus dat word dan zoiets:

Code:
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MessageBox.Show(ListBox1.SelectedItem)
    End Sub

Dan word de regel met AddHandler etc. overbodig, dus die kan je dan weghalen. :)
 
Het moet echter mogelijk zijn om een willekeurig aantal extra items toe te voegen aan de listboxmenu. Het moet dus echt mogelijk zijn om nieuwe subs toe te voegen aan de code om dit werkende te krijgen. Momenteel heb ik twee standaard items die ik op de onderstaande manier iets laat doen wat dus alleen werkt voor listboxmenu items die al in de designer bestaan.
Code:
Private Sub ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem1.Click
        dosomething()
    End Sub
 
Het gaat om dit menu. Dit komt tevoorschijn als ik met me rechtermuisknop op de listbox klik. Dus ik neem aan listbox control?
Untitled-2.png
 
Laatst bewerkt:
Ik noemde het listboxmenu omdat VB zelf die naam eraan toekende. Ik heb er zelf echt geen idee van hoe alles heet, ik ben nog erg onervaren met VB.
 
Als je dat contextmenu selecteert in je designer, dan moet je in je properties window kunnen zien of het inderdaad een ContextMenuStrip is en geen ListBox.
 
Wat je ook gewoon zou kunnen doen is iets als het onderstaande (heb VB echt al jaren niet meer aangeraakt, dus het voorbeeld is in C#):

[cpp]
public class CustomListBoxItem : ListBoxItem {
public CustomListBoxItem(String value, EventHandler eventHandler) {
AddText(value);
Click += eventHandler;
}

public event EventHandler Click;
}
[/cpp]


Deze objecten kun je dus gewoon via dezelfde methode toevoegen aan de listbox en volgens mij zouden ze nu ook klikbaar moeten zijn. En anders zou je de klasse kunnen aanpassen. Maar de objecten die je uit de listbox kunt halen beschikken dan dus ook over de functionaliteit die je hebt toegevoegd.

*overigens ook al een tijdje niet meer in C# gewerkt, dus wellicht werkt het niet meteen out of the box
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan