Control Location ädern funktioniert nur beim debuggen

  • .NET (FX) 4.0
  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Control Location ädern funktioniert nur beim debuggen

    Hey Community

    Ich habe ein Problem damit meine Controls zu verschieben.
    Die Ausgangslage ist wie folgt. Einem Benutzersteuerelement werden per Code weitere Controls hinzugefügt in einer art Auflistung.
    Nun will ich das man die Reihenfolge der Controls zur laufzeit ändern kann. Dafür setzte ich die Left und Top Eigenschaft.
    Das Problem ist das der Code nur funktioniert wenn ich ihn debugge. Falls nicht stimmen die Werte für die neue Position nicht.

    aCtrl und pCtrl sind die Objekte des Typs Control die Vertauscht werden sollen.

    VB.NET-Quellcode

    1. Dim aX As Integer = pCtrl.Location.X,
    2. aY As Integer = pCtrl.Location.Y,
    3. pX As Integer = pCtrl.Location.X,
    4. pY As Integer = aY + aCtrl.Height + ControlSpace
    5. aCtrl.Left = aX
    6. aCtrl.Top = aY
    7. pCtrl.Left = pX
    8. pCtrl.Top = pY




    Habe ich hier irgendwas wichtiges übersehen oder gibt es eine best practice für diesen Fall?

    Freundliche Grüsse Fre

    Das hat nichts bei Tipps & Tricks verloren. Verschoben.
    - Solaris

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Solaris“ ()

    Willkommen im Forum. :thumbup:

    Fre schrieb:

    die Vertauscht werden sollen.
    Meinst Du "deren Position vertauscht werden soll"?
    Das geht so (hier mit 2 Buttons):

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click
    2. Dim loc1 = Button1.Location
    3. Dim loc2 = Button2.Location
    4. Button2.Location = loc1
    5. Button1.Location = loc2
    6. End Sub
    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!
    ​Meinst Du "deren Position vertauscht werden soll"?

    Das problem ist das die beiden Controls nicht die gleiche Grösse haben und sie mit z.B. 5 px Abstand angezeigt werden sollen in einer Art Auflistung. Da währen diese Positionen falsch.

    Wie bereits erwähnt lasse ich die Position nun automatisch vom FlowLayoutPanel bestimmen und verwende die SetChildIndex Methode der ControlCollection Klasse um die Elemente zu vertauschen.

    Damit hätte ich mein Problem eigentlich gelöst.

    Fre schrieb:

    Da währen diese Positionen falsch.
    Nein.
    Da war die Problemstellung / Aufgabenstellung falsch.
    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!