1

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

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

谢谢!

4

6 回答 6

6

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

于 2010-09-22T15:20:41.227 回答
2

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

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

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

    private void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e) {
        if (e.Column == 1 && e.Row == 1) {
            e.Graphics.FillRectangle(Brushes.Red, e.CellBounds);
        }
    }
于 2010-09-22T15:31:49.940 回答
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.
于 2011-08-01T09:23:19.170 回答
0

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

我可以明确地说,您不能在一个单元格中放置多个控件。按照其他人的建议进行操作,并将您的标签添加到面板,然后将面板添加到单元格中。Flowlayout 面板可以很好地做到这一点,只是不要过度使用,否则事情会变得非常混乱。

于 2011-09-05T08:43:15.823 回答
0

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

于 2018-06-05T11:02:18.943 回答
0

首先将AutoSize标签的属性设置为False。然后根据需要设置TextAlign属性。它不会再次跨越到左上角。

于 2015-08-01T06:52:15.880 回答