Also habe ich 3 geteilte Container mit je 2 Panels.
SplitContainer1
ist der Hauptcontainer, der im Formular (Parent) angedockt ist.
SplitContainer1.Panel1
enthält SplitContainer2
, das angedockt ist.
SplitContainer1.Panel2
enthält SpliContainer3
, das angedockt ist.
So weit, so gut.
SplitContainer1
hat eine SplitterWidth
von 3.
SplitContainer2
und SplitContainer3
hat SplitterWidth
von 6.
Im Designer sehen Sie den SplitterWidth
Unterschied zwischen ihnen, aber wenn ich die Lösung erstelle, wird SplitterWidth
von SplitContainer2
und SplitContainer3
auf 4 zurückgesetzt, egal was ich mache. Ich habe den Code in "InitializeComponent" des Formulars ohne Auswirkung geändert.
Der einzige Weg, wie ich das funktioniere, ist in der Load Event
des Formulars, gib die SplitterWidths
neu an, was ich komplett dumm finde. Warum bleibt die SplitterWidths
nicht auf dem Wert, den ich im Designer angegeben habe?
Wenn jemand etwas Licht darauf werfen könnte, was wäre toll !!
Danke für Ihre Zeit,
Peter
Nur damit das nicht für die Ewigkeit unbeantwortet bleibt -
Dies ist ein alter Fehler, der jetzt in vielen Versionen in Visual Basic enthalten ist und niemals angesprochen wird (und wahrscheinlich auch nie angesprochen wird).
Wie Hans Passant erwähnt, liegt das Problem an der ISupportInitialize
Implementierung für SplitContainer
.
Da es sich um einen Fehler handelt, gibt es keine definitive Möglichkeit, das Problem logisch zu lösen.
Eine Möglichkeit, die ich in einem Mock-up-Programm getestet habe, lautet wie @xfx sagt: - Fügen Sie die Steuerelemente programmgesteuert hinzu und bearbeiten Sie sie, anstatt die Toolbox zu verwenden.
Eine Alternative ist, das SplitterWidths
programmatisch neu zu laden, egal ob es sich um Form_Load
handelt, was am wahrscheinlichsten ist, oder irgendwo anders im Code, der möglicherweise benötigt wird.
Ich glaube nicht, dass es ein Fehler ist.
Wenn ein Containersteuerelement im Designer in ein anderes Containersteuerelement geschachtelt ist, muss das verschachtelte Steuerelement das erste Steuerelement sein, das aus der Toolbox in ein Formular gezogen wird.
Wenn beispielsweise 2 SplitContainer - splitContaner1 (untergeordnet) und splitContaner2 (übergeordnet) - zur Entwurfszeit geschachtelt werden sollen, muss splitContainer1 (das verschachtelt ist) zuerst auf das Formular fallen gelassen werden. Nach diesem Elternteil splitContaner2. Endlich kann splitContaner1 in splitContaner2.Panel1 (oder 2) verschachtelt werden.
Diese Regel stellt die gleiche Auswirkung auf Eigenschaften (z. B. die SplitterWidth-Eigenschaft) sowohl zur Entwurfszeit als auch zur Laufzeit sicher und erspart die Notwendigkeit, zusätzlichen Code im load-Ereignishandler oder im Konstruktor zu schreiben, um den "Fehler" zu beheben >
Tags und Links vb.net splitcontainer