tablelayoutpanel单元格在c#win表单中填充不均匀
我有一个tablelayoutpanel。在运行期间,我会动态生成一些标签,每个标签都有一个紫色的圆形图像。现在,有些图像/标签均匀地填充在每个tablelayoutpanel单元格中,但有些没有。请查看图像。。 顶部2行上的标签被均匀填充,而从第3行开始的行已经缩小。为什么会这样?需要采取什么措施来解决此问题?请提前感谢。您应该将和设置为合适的值 例如,对于每一列和每一行,可以使用或定义样式,并为它们设置一个相等的值 在以下示例中:tablelayoutpanel单元格在c#win表单中填充不均匀,c#,.net,winforms,tablelayoutpanel,C#,.net,Winforms,Tablelayoutpanel,我有一个tablelayoutpanel。在运行期间,我会动态生成一些标签,每个标签都有一个紫色的圆形图像。现在,有些图像/标签均匀地填充在每个tablelayoutpanel单元格中,但有些没有。请查看图像。。 顶部2行上的标签被均匀填充,而从第3行开始的行已经缩小。为什么会这样?需要采取什么措施来解决此问题?请提前感谢。您应该将和设置为合适的值 例如,对于每一列和每一行,可以使用或定义样式,并为它们设置一个相等的值 在以下示例中: 我将TableLayoutPanel的AutoSize属
- 我将
的TableLayoutPanel
属性设置为trueAutoSize
- 将
的Form
属性设置为trueAutoScroll
- 使用相等百分比(
)将列样式设置为100/columnCount
)SizeType.Percent
- 使用相等的变量将行样式设置为
SizeType.Absolute
30
- 动态添加控件
int columnCount = 4;
int rowCount = 13;
this.tableLayoutPanel1.ColumnCount = columnCount;
this.tableLayoutPanel1.RowCount = rowCount;
this.tableLayoutPanel1.ColumnStyles.Clear();
this.tableLayoutPanel1.RowStyles.Clear();
this.tableLayoutPanel1.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
this.tableLayoutPanel1.BackColor = Color.White;
this.tableLayoutPanel1.AutoSize = true;
for (int i = 0; i < columnCount; i++)
{
this.tableLayoutPanel1.ColumnStyles.Add(
new ColumnStyle(SizeType.Percent, 100 / columnCount));
}
for (int i = 0; i < rowCount; i++)
{
this.tableLayoutPanel1.RowStyles.Add(
new RowStyle(SizeType.Absolute, 30));
}
this.tableLayoutPanel1.SuspendLayout();
for (var i = 1; i <= 50; i++)
{
var label = new Label();
label.Text = i.ToString();
label.Font = new Font(label.Font, FontStyle.Bold);
label.AutoSize = false;
label.Size = new Size(30, 30);
label.Image = Properties.Resources.Circle;
label.ImageAlign = ContentAlignment.MiddleCenter;
label.TextAlign = ContentAlignment.MiddleCenter;
label.Dock = DockStyle.Fill;
this.tableLayoutPanel1.Controls.Add(label);
}
this.tableLayoutPanel1.ResumeLayout();
int columnCount=4;
int rowCount=13;
this.tableLayoutPanel1.ColumnCount=ColumnCount;
this.tableLayoutPanel1.RowCount=RowCount;
this.tableLayoutPanel1.ColumnStyles.Clear();
this.tableLayoutPanel1.RowStyles.Clear();
this.tableLayoutPanel1.CellBorderStyle=TableLayoutPanelCellBorderStyle.Single;
this.tableLayoutPanel1.BackColor=Color.White;
this.tableLayoutPanel1.AutoSize=true;
对于(int i=0;i 对于(var i=1;i tablelayoutpanel dock属性为fill。您应该将tablelayoutpanel单元格的属性设置为显示生成新标签的代码,并将其添加到tablelayoutpanel
中。您应该将ColumnStyles
和行样式
设置为合适的值。Reza或其他人如何减少tablelayoutpanel的总宽度仍然保持其autosize为true???,并且请记住,上面的tablelayoutpanel位于另一个tablelayoutpanel的单元格内。减少空间的第一件事是使用label.Margin=新填充(0)
然后,如果您愿意,您可以使用较小的标签宽度。我不想触摸标签的宽度,而是希望减小整个tablelayoutpanel的宽度。这可能吗?面板的自动调整宽度取决于标签的宽度和标签的边距。在您将这些值设置为最小acc之后可接受的值,您的面板宽度处于可接受的最小值。让我们。