Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Empfohlene Antworten

Veröffentlicht

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

  • 2 Monate später...
  • Autor

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.