Disabled Kontextmenü

Hallo,
ich erzeuge Einträge für ein Kontextmenü auf diese Weise:
base.AppendSubMenuitem MenuBearbeitenAusschneiden
base.AppendSubMenuitem MenuBearbeitenKopieren
base.AppendSubMenuitem MenuBearbeitenEinfuegen

Jetzt möchte ich jedoch manche Einträge unter Umständen deaktivieren, wenn die Funktion gerade nicht zur Verfügung steht. Leider finde ich dazu kein Beispiel.

Hat jemand einen Tipp für mich?

Gruß, Stefan.

Du kannst Dir ein MenuItem Objekt für jeden Eintrag merken im Fenster und dann später enabled setzen.

diese Kontextmenüs die in einem Ereigniss/Event erzeugt werden
als MenuBearbeitenAusschneiden.Enabled = False setzen oder gar nicht erst hinzu fügen.
Ich meine die beiden Events kommen immer zusammen, erst das Menu erzeugen und dann die Verarbeitung.

Bei den anderen Menüs (MenuBar) gab es da nicht ein EnabledMenuItems Ereigniss wo man das machen kann?

Ich finde in der Language reference nur dieses:
// Add some items
base.Add(New MenuItem(“Test 1” )
base.Add(New MenuItem(“Test 2”))
base.Add(New MenuItem(“Test 3”))

// Add a Separator
base.Add(New MenuItem(MenuItem.TextSeparator))

Ich sehe nicht, wie ich da eine Referenz auf den neu hinzugefügten Eintrag bekomme oder in einer Variable sichern kann.

Es geht um eine Funktion, die ich nur manchmal anbiete. Weglassen finde ich keine gute Option. Der Anwender soll erkennen, dass die Funktion grundsätzlich an dieser Stelle existiert, nur momentan nicht.

Probiere das mal:

Var a As MenuItem = MenuBearbeitenAusschneiden.Clone // Mac wirft hier ohne .Clone eine Exception

If xy = False Then a.Enabled = False

base.AppendSubMenuItem a

base.Add(New MenuItem(“Test 1” )

=

var menu As New MenuItem(“Test 1”)
menu.Enabled = SollTest1AnSein()
menu.Name = "test1"
base.Add(menu)

var menu As New MenuItem(“Test 1”)
menu.Enabled = SollTest1AnSein()
menu.Name = “test1”
base.Addmenu(menu)

hat funktioniert.
Vielen Dank für die Unterstützung.

1 Like