2017-07-20 8 views
1

Kontext: Ich verwende ein Flowlayoutpanel, um Steuerelemente dynamisch zu einem Formular hinzuzufügen.Ränder auf dem Flow-Layout-Bedienfeld erzeugt kein erwartetes Verhalten

Frage: Warum ändert sich die Einstellung der Ränder auf jedem Steuerelement, während ich den unten stehenden Code verwende, nicht ändern, wie meine Steuerelemente im angehängten Bild angezeigt werden?

Gedanken: den Code unter Verwendung sollte das Etikett und die Textbox zwingt direkt nebeneinander sein. Es versteht sich, dass die Ränder den Abstand zwischen den einzelnen Elementen für das Layout in einem Flowlayoutpanel beeinflussen.

Flowlayoutpanel margins

// Create the control instances. 
var textBox = new TextBox(); 
var nameLabel = new Label(); 

// Setup options for controls. 
textBox.Size = new System.Drawing.Size(175, 20); 
textBox.Margin = new Padding(0, 0, 0, 0); 
nameLabel.Text = parameter.ParameterName; 
nameLabel.Margin = new Padding(0, 0, 0, 0); 

// Add controls to the flow panel. 
flowLayoutPanel1.Controls.Add(nameLabel); 
flowLayoutPanel1.Controls.Add(textBox); 

Rerferences:

Align dynamically added controls horizontally and vertically within a control in c# winforms

Adjusting spacing between usercontrols in a flowLayoutPanel

setting more space between controls in a flowLayout

Antwort

1

Ihr Label hat keine Größe, daher ist die Height-Eigenschaft größer als Sie denken. Versuchen Sie, die Backcolor-Eigenschaft der Beschriftung zu ändern, um zu sehen, wie viel Platz sie belegt.

können Sie entweder legen Sie die Größe:

nameLabel.Size = new Size(175, 16); 

oder die Ausrichtung ändern:

nameLabel.TextAlign = System.Drawing.ContentAlignment.BottomLeft; 

oder beides.

+0

Manchmal werden die kleineren Details übersehen! Danke für die Hilfe. Ich markiere sobald ich kann. @LarsTech – 0perator

Verwandte Themen