TableLayoutPanel标签是否向左上方?

时间:2010-09-22 15:15:07

标签: c# winforms label tablelayoutpanel

我有一个TableLayoutPanel,每当我将标签放入其中一个单元格时,它就会捕捉到左上角。我怎样才能做到这一点,或者改变它的位置。

此外,是否可以更改特定单元格的背景颜色?

谢谢!

6 个答案:

答案 0 :(得分:6)

Soo,您可以通过在标签上设置Dock属性来控制标签在单元格中“捕捉”的位置。它将停靠在单元格的范围内。我不相信你可以改变细胞的背景颜色。解决此问题的一种方法是在每个单元格中放置一个面板,使用完整单元格将其设置为停靠,并设置面板的背景颜色。

答案 1 :(得分:2)

要更改单元格中控件的位置,请使用控件的Anchor属性。

要更改TableLayoutPanel中单元格的背景颜色,请使用控件的CellPaint事件来测试正在绘制的列和/或行,并相应地设置颜色。

以下内容将单元格的背景颜色设置为1,1为红色:

    private void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e) {
        if (e.Column == 1 && e.Row == 1) {
            e.Graphics.FillRectangle(Brushes.Red, e.CellBounds);
        }
    }

答案 2 :(得分:0)

@Jay Riggs有答案。稍微解释一下:

我遇到了这个麻烦。我不这么认为.Dock会做的。就我而言,我通过设置

取得了成功
            lbl.Anchor = AnchorStyles.None; // to center the label. causes empty left space.
            // OR
            lbl.Anchor = AnchorStyles.Left // label sticks to left of the container and hence looks neatly aligned along with other controls.

答案 3 :(得分:0)

设置锚属性是比正常停靠更好的解决方案。您还可以使用margin属性调整单元格内标签的位置。如果您需要将标签的上边距与同一行中的文本框对齐,将标签的上边距设置为6左右是有用的。

我可以断然说明你不能在一个单元格中放置多个控件。按照其他人的建议,将标签添加到面板,然后将面板添加到单元格。 Flowlayout面板可能对此有好处,只是不要过度使用或者事情会变得非常混乱。

答案 4 :(得分:0)

首先将标签的SOLID属性设置为AutoSize。 然后根据需要设置False属性。它不会再次向左上方移动。

答案 5 :(得分:0)

通过使用标签的Dock和TextAlign属性,您可以在tablelayoutpanel中的所需位置设置标签文本