Zugehörigen Knoten eines Kontextmenüs in einem TreeView finden

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von roepke.

    Zugehörigen Knoten eines Kontextmenüs in einem TreeView finden

    Ich habe einen TreeView und ein ContextMenuStrip mit der Texteigenschaft „Remove“.
    Jeder Hauptknoten im TreeView kann mehrere Unterknoten haben die wiederum nur einen weiteren Unterknoten haben dürfen.
    Diese jeweils letzten Unterkonten erhalten beim Hinzufügen den ContextMenuStrip zugewiesen.
    Mein Problem ist jetzt, ist z.B. der Unterknoten „Mod.1 TFT Display“ per Maus selektiert worden und wird nun per Rechtsklick der ContextMenuStrip eines anderen Unterknoten (MFU_fFlash_cfi_flash_APP_V7_5.s19) angeklickt, dann wird mitunter nicht dieser Unterknoten entfernt, sondern der zuvor ausgewählte oder es passiert noch schlimmeres wie z.B. eine Ausnahme.

    Meine aktuelle Abfrage liefert ja auch das Maus Ereignis des ContextMenuStrip und nicht den zugehörigen Knoten.

    VB.NET-Quellcode

    1. Private Sub cms_TreeViewNodes_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles cms_TreeViewNodes.MouseClick
    2. tv_ConectedModules.SelectedNode = tv_ConectedModules.GetNodeAt(tv_ConectedModules.PointToClient(Cursor.Position))
    3. Dim _tn As TreeNode = tv_ConectedModules.SelectedNode
    4. Call RemoveTreeNode(_tn)
    5. End Sub

    Ich habe jetzt schon einigens probiert, aber so richtig funktioniert es noch immer nicht.
    Wie komme ich an den Knoten ran?
    @roepke Mach zuerst bei Rechtsklick, dass der angeklickte Node der selektierte Node ist, das geht automatisch nur bei Links-Click.
    Dann sollte der Rest funktionieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!