Geschachtelte SplitContainer führen zu einem Fehler in der SplitterWidth

8

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

    
Peter 09.11.2014, 16:40
quelle

2 Antworten

0

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.

    
David 16.12.2016, 11:44
quelle
0

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 >     

Bahrom 30.07.2017 17:07
quelle

Tags und Links