2

我有一个TableLayoutPanel包含5行和5列可变大小(一个3x3网格与两边的填充单元格)。在每个内部单元中,我将PictureBoxDock参数集设置在Fill上。我现在想添加一个覆盖整个9个单元的Label。由于Label是透明的,并不总是可见的,所以应该没有问题。WinForms - 在TableLayoutPanel中重叠两个控件

但是,当我尝试在TableLayoutPanel中移动Label时,它所做的只是“压缩”底部或右侧的PictureBoxes

下面是一个/前设置后的图片:

Before

After (白色文字是该计划的一部分,而不是一个标题)

我试图修改RowSpanColumnSpan属性的标签,但无济于事。截至目前,PictureBoxesDock属性设置为FillLabel也是如此。将其设置为None仅使其更小,但将PictureBoxes堆叠在底部。

我也尝试修改TabIndexes,但没有这个运气。

我怎样才能达到我想要的?

+3

你不能把一个以上控制到TableLayoutPanel'的'细胞。你可以将'Label'和'TableLayoutPanel'放入同一个容器(例如'Panel')。另外,你必须在'TableLayoutPanel'子尺寸上创建'Label'大小(如果我正确理解了布局)。为此,您可以手动处理该子女的“已调整大小”事件。 – Sinatr

+1

将“PictureBox”设置为“Label”父级。即'pictureBox.Controls.Add(标签)'。 –

+1

将'Label'和'TableLayoutPanel'放入同一个'Panel'中修复它,谢谢!你可能想发布它,以便我可以接受你的答案。 – pie3636

回答

2

的溶液,如Sinatr指出的那样,是创建一个容器如Panel并使其同时含有重叠控制(这里,PictureBox和含有9其它PictureBoxesTableLayoutPanel),由于TableLayoutPanel只能包含一个元件每个单元格。

文档的结构必须是这样的:

Form 
↳ Panel 
    ↳ PictureBox  # The big one 
    ↳ TableLayoutPanel 
    ↳ PictureBox  # The 9 small ones 
     ... 
    ↳ PictureBox 
相关问题