首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >修复TableLayoutPanel中每一行的行高

修复TableLayoutPanel中每一行的行高
EN

Stack Overflow用户
提问于 2013-02-21 14:37:17
回答 2查看 28.2K关注 0票数 10

我正在开发c#操作系统。

第一,由于我的需要而不能改变的事情如下:

  1. TableLayoutPanel的大小是固定的。
  2. 列的总数#是固定的。

现在,我希望为所有行设置一个固定高度,但是随着行数的增加,如果我将RowStyle属性设置为带有100.0FPercent,那么它对3到4个项的工作正常,但是在4-5项之后,一行上的控件会覆盖另一行上的控件。

我已经寻找了这么多,但我无法得到正确的答案。我也尝试过AutoSizePercentAbsolute属性的RowStyle,尽管它不起作用。

那该怎么做和怎么做?我怎样才能做到这一点?

最终,我想和DataGridView of C#一样做同样的事情。

提前谢谢..。

我正在研究WinForms...the示例代码。

代码语言:javascript
运行
复制
int cnt = tableLayout.RowCount = myDataTable.Rows.Count;

tableLayout.Size = new System.Drawing.Size(555, 200);

for (int i = 1; i <= cnt; i++)
{

    Label lblSrNo = new Label();
    lblSrNo.Text = i.ToString(); 

    TextBox txt = new TextBox();
    txt.Text = ""; 
    txt.Size = new System.Drawing.Size(69, 20);

    tableLayout.Controls.Add(lblSrNo, 0, i - 1);
    tableLayout.Controls.Add(txt, 1, i - 1);
}

tableLayout.RowStyles.Clear();

foreach (RowStyle rs in tableLayout.RowStyles)                
    tableLayout.RowStyles.Add(new RowStyle(SizeType.AutoSize));

标签和文本框对4-5 #行运行良好,但是每当行#(在本例中为变量cnt in for循环)增加时,行将相互覆盖--即一个控件覆盖另一个控件……我拖放了TableLayoutPanel控件,并手动创建了一行和两个列。

所以请告诉我怎么做。

EN

回答 2

Stack Overflow用户

发布于 2014-03-20 17:01:46

我自己还不熟悉tableLayoutPanels,但我注意到在代码的底部,您正在清除集合中的所有行样式,然后尝试在您的foreach循环中迭代它们。

是你干的:

代码语言:javascript
运行
复制
tableLayout.RowStyles.Clear();   //now you have zero rowstyles

foreach (RowStyle rs in tableLayout.RowStyles)   //this will never execute
    tableLayout.RowStyles.Add(new RowStyle(SizeType.AutoSize));

试试这个吧。

代码语言:javascript
运行
复制
TableLayoutRowStyleCollection styles =
    tableLayout.RowStyles;
foreach (RowStyle style in styles){
    // Set the row height to 20 pixels.
    style.SizeType = SizeType.Absolute;
    style.Height = 20;
}

编辑:我刚刚意识到,添加N行并不会添加N个可以迭代的行样式。我认为您正在添加N行,但它们都没有行样式。

我想您可以清除()行样式,然后添加N个行样式,类似于您已经在做的事情。

票数 15
EN

Stack Overflow用户

发布于 2019-03-22 13:33:19

增加表布局面板的行高有两种方法。

  1. 查看以下链接:https://social.msdn.microsoft.com/Forums/windows/en-US/d80db8e1-d6cc-48b8-957f-0f73263c6d4a/how-to-change-the-row-height-of-a-tablelayoutpanel-at-runtime?forum=winforms 它通过设置类后面的YourTableLayoutPanel.RowStylesindex.Height int代码来指定。
  2. 另一种方法是在UI的设计器中设置行高度。通过UI,进入面板的行属性,选择行并使用百分比或绝对设置所需的高度。
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15004937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档