gpt4 book ai didi

c# - tablelayoutpanel 单元格未在 c# win 窗体中均匀填充

转载 作者:太空宇宙 更新时间:2023-11-03 23:23:48 24 4
gpt4 key购买 nike

我有一个 tablelayoutpanel。在运行时我正在动态生成一些标签,每个标签都有一个紫色的圆形图像。现在一些图像/标签均匀地填充在每个 tablelayoutpanel 单元格内,但有些不是。请看图像.. enter image description here

顶部 2 行的标签被均匀填充,而从第 3 行开始的行缩小了。为什么会这样?需要做什么才能摆脱这个问题?提前致谢。

最佳答案

你应该设置ColumnStylesRowStyles到合适的值。

例如,对于每一列和每一行,您可以使用 SizeType.Percent 定义样式或 SizeType.Absolute并为它们设置一个相等的值。

在下面的例子中:

  • 我将 TableLayoutPanelAutoSize 属性设置为 true
  • FormAutoScroll 属性设置为 true
  • 使用等百分比 (100/columnCount) 将列样式设置为 SizeType.Percent
  • 使用相等值 30
  • 将行样式设置为 SizeType.Absolute
  • 动态添加控件。

示例代码:

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();

截图:

enter image description here

关于c# - tablelayoutpanel 单元格未在 c# win 窗体中均匀填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34478730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com