C# TableLayoutPanel标签是否捕捉到左上角?

C# TableLayoutPanel标签是否捕捉到左上角?,c#,winforms,label,tablelayoutpanel,C#,Winforms,Label,Tablelayoutpanel,我有一个TableLayoutPanel,每次我将标签放入其中一个单元格时,它都会捕捉到左上角。我如何才能到达它不这样做或改变它捕捉的位置 另外,是否可以更改特定单元格的背景颜色 谢谢 因此,您可以通过在标签上设置Dock属性来控制标签“捕捉”在单元格中的位置。它将停靠在牢房的范围内。我不相信你能改变单元格的背景色。解决此问题的一种方法是在每个单元格中放置一个面板,使用完整单元格将其设置为停靠,并设置面板的背景颜色。因此,您可以通过设置标签上的停靠属性来控制标签在单元格中“捕捉”的位置。它将停靠

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

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


谢谢

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

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

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

要更改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);
        }
    }

若要更改控件在单元格中的位置,请使用控件的锚属性

要更改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);
        }
    }

@杰伊·里格斯有答案。对此稍作解释:

我遇到了这个麻烦。我不认为。多克会做这个把戏。在我的例子中,我通过设置

            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.

@杰伊·里格斯有答案。对此稍作解释:

我遇到了这个麻烦。我不认为。多克会做这个把戏。在我的例子中,我通过设置

            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.

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


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

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

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

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

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

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

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

是否可以在单元格中粘贴多个标签?我似乎不能这么做…@Soo-我从来没有试过,但马上,我不明白为什么不能。在单元格中放置一个面板,然后在面板上放置多个控件可能更容易。@因此,不,您不能,您需要向面板添加另一个容器,然后向该容器添加控件。这不是停靠。这是锚。在这种情况下,您必须将其设置为“无”。是否可以在一个单元格中粘贴多个标签?我似乎不能这么做…@Soo-我从来没有试过,但马上,我不明白为什么不能。在单元格中放置一个面板,然后在面板上放置多个控件可能更容易。@因此,不,您不能,您需要向面板添加另一个容器,然后向该容器添加控件。这不是停靠。这是锚。在这种情况下,您必须将其设置为“无”。是否可以在一个单元格中粘贴多个标签?我似乎无法做到…@Soo我喜欢Randy的建议:将所有想要的控件放在面板中,然后将面板放在TLP中。是否可以在一个单元格中粘贴多个标签?我似乎不能这么做…@Soo我喜欢Randy的建议:将所有你想要的控件放在一个面板中,然后将面板放在你的TLP中。