none
Splitcontainer_Splittermoving: Children-Resize ist schlecht

    Frage

  • Tag, komm wieder mal mit was nicht klar:

    Eine Form, ein Splitcontainer drauf, in jedes Panel ein Listview, panelfüllend.


    Private Sub SplitContainer1_SplitterMoving(sender As Object, e As System.Windows.Forms.SplitterCancelEventArgs) Handles SplitContainer1.SplitterMoving
          ListView1.Width = e.SplitX
          ListView2.Width = SplitContainer1.ClientSize.Width - e.SplitX
       End Sub

    Was da rauskommt sieht stümperhaft aus:

    Verschieben nach rechts zieht den re. Rand des LV2 nach links aber verschiebt nicht die X-Koordinate von LV2 beim Ziehen.
    Verschieben nach links nimmt von LV2 die X-Koordinate ebenfalls nicht mit (beim Ziehen).

    Nach dem Ziehen ist es ok, aber das finde ich nicht so doll...

    Was mach ich hier falsch?

    Vielen Dank!

    TH

    Samstag, 12. Oktober 2013 22:19

Antworten

  • Hallo,

    anstatt es manuell zu programmieren, lege die Dock Eigenschaft für die ListView Steuerelemente auf Fill fest. Dann passen sie sich automatisch an die neue Größe an. Möchtest Du etwas Rand haben, setze die Padding-Eigenschaft der SplitContainter Panels entsprechend fest.

    Gruß Elmar

    Sonntag, 13. Oktober 2013 07:22
  •  Ein Anpassen beim Ziehen findet auch hier nicht statt. Offenbar geht das n icht mit VB.Net? (Beim Explorer klappt das besser... )- Sieht aber eindeutig besser aus.)

    Hallo,
    Das unterstützt der SplitContainer leider nicht. Ich habe dazu schon einiges Probiert um es trotzdem hin zu bekommen, aber leider alles ohne Erfolg.

    Bei meiner Recherche bin ich auf das hier gestoßen. Eigentlich keine so schlechte Idee sich den SplittContainer nachzubauen. So hast du zumindest freie Wahl bei der Anpassung und kannst bei MouseMove die Panels direkt in der Größe ändern.
    Wenn du es also wirklich in WinForms mit einer Live-Vorschau hin bekommen möchtest, dann kannst du es mal so versuchen.

    (Wenn du mal geplant hast, dich mit WPF zu beschäftigen, dort gibts den so genannten GridSplitter, der erzeugt eine Live-Vorschau. Ob sich der Umstieg aber wirklich lohnt, musst du wissen.)


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Sonntag, 13. Oktober 2013 09:54

Alle Antworten

  • Hallo,

    anstatt es manuell zu programmieren, lege die Dock Eigenschaft für die ListView Steuerelemente auf Fill fest. Dann passen sie sich automatisch an die neue Größe an. Möchtest Du etwas Rand haben, setze die Padding-Eigenschaft der SplitContainter Panels entsprechend fest.

    Gruß Elmar

    Sonntag, 13. Oktober 2013 07:22
  •  lege die Dock Eigenschaft für die ListView Steuerelemente auf Fill fest. Dann passen sie sich automatisch an die neue Größe an.

    Oh cool. Vielen Dank!

    (die controls reagieren dann, als stünde mein obiger code in SplitterMoved. Ein Anpassen beim Ziehen findet auch hier nicht statt. Offenbar geht das n icht mit VB.Net? (Beim Explorer klappt das besser... )- Sieht aber eindeutig besser aus.)

    TH

    Sonntag, 13. Oktober 2013 08:51
  •  Ein Anpassen beim Ziehen findet auch hier nicht statt. Offenbar geht das n icht mit VB.Net? (Beim Explorer klappt das besser... )- Sieht aber eindeutig besser aus.)

    Hallo,
    Das unterstützt der SplitContainer leider nicht. Ich habe dazu schon einiges Probiert um es trotzdem hin zu bekommen, aber leider alles ohne Erfolg.

    Bei meiner Recherche bin ich auf das hier gestoßen. Eigentlich keine so schlechte Idee sich den SplittContainer nachzubauen. So hast du zumindest freie Wahl bei der Anpassung und kannst bei MouseMove die Panels direkt in der Größe ändern.
    Wenn du es also wirklich in WinForms mit einer Live-Vorschau hin bekommen möchtest, dann kannst du es mal so versuchen.

    (Wenn du mal geplant hast, dich mit WPF zu beschäftigen, dort gibts den so genannten GridSplitter, der erzeugt eine Live-Vorschau. Ob sich der Umstieg aber wirklich lohnt, musst du wissen.)


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Sonntag, 13. Oktober 2013 09:54
  • Vielen Dank!

    TH

    Sonntag, 13. Oktober 2013 10:59