Announcement

Collapse
No announcement yet.

Dynamisches Contextmenü mit Events

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dynamisches Contextmenü mit Events

    Hallo Leute,

    ich bin irgendwie mit meinem Latein am Ende. Erstmal mein Ausgangsproblem: Ich habe ein Contextmenü das an eine mehrzeilige Textbox gebunden ist. Diese hat einige fixe Einträge und soll jetzt einige dynamische Einträge erhalten.

    Beim Programmstart soll also eine Schleife durchlaufen werden bei der der Punkt "Platzhalter" einige Unterpunkte mit den Werten aus der DB bekommt.


    Das Menü stellt sich wie folgt dar:

    Einfügen
    Platzhalter
    hier meine dynamischen einträge
    "
    "

    Meine Frage ist jetzt wie ich diese dynamischen Einträge erstellen lassen kann, so dass sie als Unterpunkte von Platzhalter erscheinen und wie ich passend dazu dynamische Click-Events erstellen kann auf deren Klick der entsprechende Eintrag in die Textbox kommt.

    Ich hoffe ihr könnt mir helfen! Vielen Dank schonmal.

    dainsanity

  • #2
    Hallo,

    Ich kann dir im Moment kein konkretes Loesungsbeispiel bieten, aber theoretisch muesste es so funktionieren:

    - Werte aus der DB laden und durchiterieren (for (...))
    - fuer jeden Wert ein neues ContextMenuItem (oder so aehnlich) erstellen
    - das neue ContextMenuItem mit einem Click-Event belegen (this.newMenuItem.Click += new EventHandler(...))
    - das neue ContextMenuItem als Child zum ContextMenu hinzufuegen (irgendwie in der Art von this.myContextMenu.Items[2].Add(this.newContextMenuItem); - Item[2] waere zB der Platzhalter).

    Hoffe das hilft dir weiter
    *-- robert.oh. --*

    Comment


    • #3
      ..ich gehe nachfolgend davon aus, dass 'contextMenuStrip1' das Kontextmenüobjekt ist. Um einen Eintrag im Code hinzuzufügen, einfach ein Objekt des Typs 'ToolStripMenuItem' erzeugen und in den Items des Kontextmenüs hinzufügen.

      Code:
      ToolStripMenuItem MyItem = new ToolStripMenuItem("Text");
      contextMenuStrip1.Items.Add(MyItem);
      MyItem.Click += new EventHandler(MyItem_Click);
      ..in der nachfolgenden Methode findet dann die Ereignisverarbeitung statt:

      Code:
             
      void MyItem_Click(object sender, EventArgs e)
      {
      //Ereigniscode
      }
      Über die Funktionen 'Insert()' können Einträge auf mit Position eingefügt werden (also nicht nur am Ende der Liste). Mit 'Remove()' und 'RemoveAt()' entsprechend gelöscht werden (Collection).

      Comment

      Working...
      X