虽然我发现当前投票赞成的答案相当充分,但它似乎也比需要的稍微混乱。您必须先将控件添加到 tableLayoutPanel,然后才能设置它们的属性。
Visual Studio(2013 和可能的其他版本)会将这些属性显示为控件的一部分。实际上,它们是 tableLayoutPanel 的一部分。
解释:
tableLayoutPanel.Controls.Add(**control**, x, y)
tableLayoutPanel.SetColumnSpan(**control**, '# of cols to span')
例子:
tableLayoutPanel1.Controls.Add(**button1**, 0, 0);
tableLayoutPanel1.SetColumnSpan(**button1**, 2);
tableLayoutPanel1.SetRowSpan(**button1**, 3);
结果:一个“占用”这个空间的按钮。 (只要它足够大以覆盖该区域。即使它没有“覆盖”该空间,它仍然会“保留”它。)
O O X X X
O O X X X
O O X X X
X X X X X
X X X X X
将跨度设置为大于网格大小将..:
不要更改网格大小。
不要将数字裁剪/编辑为网格的大小。
不要在编译时抛出错误。
它将像跨度设置为当前网格 (tableLayoutPanel) 的最大大小一样执行/执行。这仅在 TLP/网格大小发生变化时才相关。
如果您以编程方式将两个控件添加到相同的网格位置,则网格中的第一个控件将保留其位置。任何随后添加的控件都会被推送到下一个单元块。如果添加了“跨度”,它将将该单元块视为已使用并继续搜索未使用的单元块。
例如:label1、label2 和 label3 添加到 0,0。
-
label1会出现在0,0
-
标签2:0,1
-
label3:0,2
例如 2:标签 1 的行跨度为 2。
-
label1:0,0
-
label2:重定位到 0,2
-
label3:0,3
选择正确的网格点和跨度后,您可以使用停靠和锚点属性进一步优化布局。