问题标签 [tablelayoutpanel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
308 浏览

.net - TableLayoutPanel - 按行数添加滚动条

我在 userconrol 中有一个 TableLayoutPanel。我想有条件地向面板添加一个垂直滚动条 - 仅当有超过 5 行时。表格布局面板只需要显示 5 行,无论用户控件的大小如何。其他行(如果有)将在表格布局面板中,但仅在向下滚动时才会显示。

我怎样才能做到这一点?

谢谢。

0 投票
1 回答
1887 浏览

c# - 为什么放置在 TableLayoutPanels 中的控件不“对齐”它们的“单元格”?

我正在动态创建一个 TableLayoutPanel,然后动态创建标签和文本框以放入其中。

我可以将列数和行数分配给 TableLayoutPanel,这似乎是合乎逻辑的:

...创建放置在其中的控件:

...然后将创建的控件 [s] 放入指定的“单元格”(列和行)中:

...但这不起作用 - 如果我为动态创建的子控件指定宽度和高度值,或者我没有指定(在这种情况下它们太大 - 具体来说,它们的宽度太大)。

更新

我添加了这段代码,它没有任何区别:

// 行

更新到更新

我看到在设计时,标签或文本框(可能是任何控件)具有 Cell[col,row] 属性。如果它不是只读的,我想动态访问它,以便我可以设置:

这可以在代码中完成吗?当时似乎没有识别“Cell”属性(我猜是可以理解的)。

更新到 UPDATE REVISITED

我添加了这行代码:

...现在我看到标签和文本框实际上位于我希望它们居住的单元格(列和行)中

但是,我需要让标签从其单元格的左上角向下移动到单元格的中心(垂直和水平)。

即使在设计时(在表单上有一个“测试”/临时 TableLayoutPanel),添加的标签在位于 TableLayoutPanel 单元格内时也不会响应对 TextAlign 属性的更改 - 无论我将 TextAlign 设置为什么(“中间中心”似乎是最明智的),它们顽固地固定在牢房的左上角。

同样,在设计时更改标签的 Location.X 和 Location.Y 没有任何作用。标签贴在牢房的西北角,就像藤壶贴在失散已久的锚上。

0 投票
2 回答
33290 浏览

c# - 以编程方式将边距和/或填充分配给标签

在尝试让 TableLayoutPanel 中的一些标签从其单元格的左上角移动到单元格的中心时,我正在尝试添加填充和/或边距。

但是,我没有尝试过任何工作。这是我尝试过的代码和结果:

0 投票
2 回答
855 浏览

c# - 为什么我的 TextBox.Width 值不接受我尝试分配的值?

我试图通过给它们一个宽度和高度来均匀地分配动态创建的控件,该宽度和高度是容器控件的宽度和高度的一小部分。

然而,尽管我计算尺寸的函数是正确的,但由于某种原因,对 Width 属性的分配被顽固地拒绝了。WidthToUse() 函数返回 19,但是当尝试将该值分配给动态创建的 TextBox 时,它仍保持在...630!为什么要从 630 开始,为什么它拒绝分配?

即使是高度,虽然“工作”并不完全正确 - 面板上的控件太多或没有足够的空间来容纳使用此数学的所有控件。

这是我的代码:

0 投票
2 回答
13855 浏览

c# - ListBox AutoSizes 按项目高度

我将 TableLayoutPanel 用于表单中的所有元素。我使用 Dock Fill 来自动调整 TextBox 和 ListBox 的大小。TextBox 完全适合 TableLayoutPanel 的单元格,但不适合 ListBox。它按项目高度自动调整大小。

在此处输入图像描述

如何删除ListBox底部和表单底部之间的这个间隙?我知道我可以将 ListBox 的高度设置为某个值(例如 ListBox 中的项目高度为 16、16 * 10 个元素 = 160、160 将正确匹配),但是还有其他解决方案吗?
我正在使用 C#。

0 投票
1 回答
1787 浏览

c# - 当代码位于 Form1.Designer.cs 之外时,表格布局面板不会在屏幕上绘制(或工作)

我正在使用 C# Forms 应用程序。

我已经将一个表格布局面板拖放到窗口中,然后在Form1.Designer.cs自动生成的文件之外动态添加组件,代码在 Form1.cs 文件中。

在那里,我用几个 for 循环添加了所有应该填充布局表的内容,这个成功完成了。

现在的问题是我还想动态创建表格布局,所以我所做的只是从设计器文件中复制并粘贴自动生成的代码,并从 [design] 中删除 d&d 表格布局。

这就是我为其他组件所做的,它已经无缝地工作了,现在,由于某种原因,这不起作用。

预期的结果将是(不可见的布局面板)在其中显示所有图像框。

输出仅显示一个空窗口。

代码如下:

就在下面:

所以,我确定问题就在这里,因为在我更改代码位置之前,它正在打印以筛选图像框。所以问题应该存在,但以防万一:

我打电话paintLayoutTableOnScreen()给以下方式:

paintTablesInScreen()执行以下操作:

drawTable()

0 投票
2 回答
2629 浏览

c# - C# .NET TableLayoutPanel 的最后一列被拉伸

我正在以编程方式创建一个 TableLayoutPanel。它有 2 行。列的数量由用户添加。

也可以一次删除 1 列。

但是每当我这样做并将所有控件移回 1 列以关闭空列时,最后一列都会被拉伸以填充剩余的空间,就好像它具有自动调整大小而不是绝对宽度一样。

问题是:我希望我的最后一栏和其他栏一样宽,但我不知道怎么做。

感谢阅读,丹尼

0 投票
2 回答
6237 浏览

c# - 放置在 TableLayout 中的停靠控件的大小不会自动小于其创建大小

这个问题比解释得更好,所以我用 Visual Studio 2010 项目设置了一个git 存储库,用于查看问题的实际情况。

我有一个项目,我已将 ComboBox 控件 ( comboField) 添加到 TableLayout 控件 ( tableLayoutPanel1)。我已将DockComboBox 的属性设置为,Fill以便它填充它所在的 TableLayout 控件的单元格。我还将DockTableLayout 控件的属性设置为,Fill以便它填充它已放置的表单在。ComboBox 的宽度当前为 193 像素。

当我运行表单并增加其宽度时,ComboBox 的大小会按预期增加。当我减小表单的大小时,ComboBox 的大小会减小,直到达到原始大小(193 像素)。此时,ComboBox 的宽度不会进一步减小,从而导致控件的右侧被剪裁。这与我的预期相反:ComboBox 的宽度将减小到零,因为没有MinimumSize指定。MinimumSize窗体上的任何其他控件(例如 TableLayout 控件)都没有指定。

如果相关,TableLayout 的第一列的宽度设置为Absolute100 像素,而 TableLayout 的第二列的宽度设置为AutoSize.

任何人都可以解释为什么这个表格的行为与我的期望相反,并建议我如何以我想要的方式让它工作?任何帮助将非常感激。

0 投票
1 回答
1814 浏览

c# - Windows 窗体 TableLayoutPanel 中的不同单元格大小

在 Windows 窗体中,我如何使其TableLayoutPanel包含不同的单元格大小(行和/或列)?

例如:第 1 行可能只有 1 个单元格,第 2 行可能有 5 个单元格,第 3 行可能还有 5 个单元格,但列大小不同。

0 投票
2 回答
1600 浏览

c# - 基于可见区域百分比的自动滚动的 TableLayoutPanel 高度

我有一个自动滚动的 TableLayoutPanel,我正在向其中动态添加行。我希望每行的高度是 TableLayoutPanel 可见区域的 1/3,即在添加第 4 个面板和自动滚动启动之前面板的原始高度。我可以计算手动到达行的高度并将其设置为绝对高度,但可以调整 TableLayoutPanel 的大小。在那种情况下,我可以处理调整大小的事件并重新计算每行的绝对高度,但我想知道是否有更好的方法。有没有办法将行高指定为可见面板区域的百分比,还是我应该手动计算,绝对高度路线?