dynamisches Lineshape lässt sich über den Code nicht ansprechen

  • VB.NET

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

    dynamisches Lineshape lässt sich über den Code nicht ansprechen

    Hallo Fangemeinde,

    Ausgangslage: Ich möchte einige Pictureboxen dynamisch in der Form1 erstellen und diese mit einfachen Linien miteinander verbinden (als grafische Abhängigkeit für den User). Soweit kein Problem. Die Pictureboxen sollen innerhalb der Form mit Drag'n drop verschoben werden können, so dass die "pseudoangedockten" Verbindungslinien mitwandern. Die Picturebox kann ich über das Sender-Objekt einfach bearbeiten, aber die "lose" Linie kann ich nicht ansprechen.
    Ich habe im Code dynamisch eine Linie auf Form1 mit Powerpacks.LineShape erstellt und möchte diese Linie bei einer späteren Aktion über den Code wieder ansprechen und die Zeichnungskoordinaten X1 und 2 sowie Y1 und 2 ändern.

    Leider gelingt mir das nicht, über den folgenden Weg von "Unwesen":

    VB.NET-Quellcode

    1. Form1.Controls(Linie.Name("Ln" & HostCount)).X2 = sender.Left + 16 : Linie.Y2 = sender.Top + 16

    Ich muss dazu noch sagen, dass ich die Linie in der Form1 nur über einen ShapeContainer erstellen konnte, aber auch Form1.Shapecontainer1.Controls(...) fruchtet nicht.
    Was ist hier falsch? ?(
    Hallo ErfinderdesRades

    Ich hab die Lösung. Ich danke dir trotzdem für dienen mitgelieferten Code, er hat mich zu weiteren Gedankengängen inspiriert und mir zur Lösung geholfen, die wie folgt aussieht:

    VB.NET-Quellcode

    1. For Each c As PowerPacks.Shape In Form1.sc.Shapes
    2. If c.Name = "Ln" & Mid(sender.name, 3) Then
    3. Dim sh As PowerPacks.LineShape = CType(c, PowerPacks.LineShape)
    4. sh.X2 = sender.Left + 16 : sh.Y2 = sender.Top + 16
    5. End If
    6. Next


    Als erstes wird der Powerpacks Shapecontainer durchsucht, vorher hatte ich die Controlls der Form durchsucht was falsch war. Jetzt wird das Lineshape verglichen dessen Name mit Nummer ich suche (Zeile2) dann wird eine neue Refernz zum gefundenen Lineshape c gemacht und dessen Koordinaten X2 und Y2 geändert. Sender ist das PictureBox-Objekt das beim drag n Drop übergeben wird und eben dessen Linie mit veräbdert werden soll.

    Ich werde trotzdem meinem Namen alle Ehre machen - es stehen noch viel Probleme an.
    Bis zum nächsten "dauerproblem"