Zum Inhalt springen

VB: ContextMenuStrip - Neues (Unter)Element zur Laufzeit hinzufügen?


Boro

Empfohlene Beiträge

Hallo,

ich verwende ein ContextMenuStrip zusammen mit einem NotifyIcon um in der Systray ein Symbol abzulegen.

Bei einem Rechtsklick auf das Symbol soll ein Auswahldialog erscheinen mit dem ein Programm aufgerufen werden kann. Gute Beispiele sind die Systray-Icons von ICQ, DaemonTools, Outlook uvm.

Die Auswahlmöglichkeiten sollen während der Laufzeit verändert werden, d.h. es sollen neue Listeneinträge hinzukommen oder alte entfernt werden.

Grundsätzlich funktioniert das auch, aber ich verstehe nicht wie ich Elemente in einer Untergruppe hinzufügen oder löschen kann. Ich habe gedacht das ich einen Index angeben kann, aber das funktioniert leider nicht.

Momentan habe ich das:


'FavoritiesContextMenuStrip ist das bereits vorhandene ContextMenuStrip Steuerelement auf einem Form. 

'Innerhalb des ContextMenuStrip wurde über die IDE bereits einige ToolStripMenuItem hinzugefügt. Innerhalb dieser sollen während der Laufzeit neue Einträge entstehen.


'Diese Prozedur wird aufgerufen wenn in dem ToolStripMenuItem "Contact" die ToolStriptextbox "ContactNew" angeklickt wird

    Private Sub ContactNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContactNew.Click

        FavoritiesContextMenuStrip.Items.Add("Hallo, ich bin ein neuer Eintrag")

    End Sub

Das Beispiel legt innerhalb FavoritiesContextMenuStrip in der untersten Ebene einen neuen Eintrag an, gewünscht ist aber das der Eintrag unter dem ToolStripMenuItem "Contact" erscheinen soll.

Weiß jemand Rat?

Danke im Voraus.

Boro

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Monate später...

Hallo,

wenn auch spät, hier noch ein kurzes Feedback und die Lösung zu der Frage, eventuell kann das jemand später noch gebrauchen :-)

In einem Kontextmenü sind die Untergruppe im Quellcode direkt ansprechbar, d.h. man kann über den Objektnamen direkt darauf zugreifen. Mein Beispiel oben ging davon aus das eine neue Untergruppe nur über das Objekt des Kontextmenüs hinzugefügt werden kann.

Beispiel:

'Auf dem Formular frmStartup gibt es ein NotifyIcon dem ein Kontextmenü "FavoritiesContextMenuStrip" über die Eigenschaft "ContextmenueStrip" zugewiesen wurde. Innerhalb des Kontextmenü gibt es über die IDE vordefinierte Elemente wie z.B. "Contact", "Person", "Appointment". Diese Elemente sollen zur Laufzeit neue Einträge bekommen. Das soll durch den OK-Button auf einen anderen Formular geschehen:

zum Quellcode: Das Menüitem "Contact" wird (auf dem anderen Formular) direkt angesprochen. Die Methode insert erwartet als ersten Parameter den gewünschten Index (hier durch cint(cboRank.Text)), dann ein neues Objekt der Klasse Toolstripmenuitem sowie den beschreibungstext der hier von dem formular genommen wird. Das Objekt SOCurrentcontact.identity ist hier unwichtig, das wird für die eigentliche Programmlogik gebraucht.


'Ereignisprozedur beim klicken des Buttons

Private Sub cmdYes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdYes.Click

     frmStartup.Contact.DropDownItems.Insert(CInt(cboRank.Text), New      ToolStripMenuItem(txtsaveas.Text, New Bitmap(My.Resources.IconResources.Customer), Nothing, SOcurrentcontact.Identity.ToString))


 'Nach dem insert kann der neue Menüeintrag über den Index angesprochen werden und verändert werden, hier wird der Tooltip gespeichert. 

         fmStartup.Contact.DropDownItems.Item(CInt(cboRank.Text)).ToolTipText = SOcurrentcontact.Name

 Me.Close()

End Sub

Will man später auf ein Klickereignis reagieren verwendet kann das Beispiel verwendet werden.

    Private Sub Contact_DropDownItemClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles Contact.DropDownItemClicked

        'Die interne Bezeichnung des Menüitem, nicht dessen inhalt

        msgbox (e.ClickedItem.Name) 


       'Der Inhalt des Menüitem

       msgbox (e.DropDownItems.Item([Index von objekt e auswerten!]).Name)

    End Sub

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...