C# 如何增加网格中动态添加的标签之间的间距?

C# 如何增加网格中动态添加的标签之间的间距?,c#,winforms,loops,grid,C#,Winforms,Loops,Grid,我需要在WinForm应用程序的表单上放置“x”个标签。下面的函数已经做到了这一点。我缺少的是在不增加标签尺寸的情况下增加每个标签之间的间隙的能力。我知道这可能很简单,但就我个人而言,我似乎无法理解。我为这样一个愚蠢的问题提前道歉 private void AddUserControl() { int ucHeight = 60; int ucWidth = 320; int spacer = 20; int start_x = 10; int start

我需要在WinForm应用程序的表单上放置“x”个标签。下面的函数已经做到了这一点。我缺少的是在不增加标签尺寸的情况下增加每个标签之间的间隙的能力。我知道这可能很简单,但就我个人而言,我似乎无法理解。我为这样一个愚蠢的问题提前道歉

private void AddUserControl()
{
    int ucHeight = 60;
    int ucWidth = 320;
    int spacer = 20;
    int start_x = 10;
    int start_y = 10;
    int NumOfRows = 6;
    int NumOfColumns = 3;
    int totalProblems = 17;
    int ucCounter = 0;

    for (int x = 0; x < NumOfRows; x++)
    {
        for (int y = 0; y < NumOfColumns; y++)
        {
            if (ucCounter < totalProblems)
            {
                Label myLabel = new Label();
                myLabel.Top = start_x + (x * ucHeight + spacer);
                myLabel.Left = start_y + (y * ucWidth + spacer);
                myLabel.Width = ucWidth;
                myLabel.Height = ucHeight;
                this.Controls.Add(myLabel);
                ucCounter++;
            }
        }
    }
}
private void AddUserControl()
{
int-ucHeight=60;
int ucWidth=320;
int间隔棒=20;
int start_x=10;
int start_y=10;
int numorrows=6;
int NumOfColumns=3;
整数=17;
int ucCounter=0;
对于(int x=0;x
我认为您可能在寻找填充物,但请查看,您应该能够确定什么适合您的需求

你的括号放错地方了。这相当于:

var real_start_y = start_y + spacer;
myLabel.Left = real_start_y + (y * ucWidth);
你想要的是

myLabel.Left = start_y + y * (ucWidth + spacer);
因此,每一列都添加了与前一列的间隔


您在计算
Top

时也遇到同样的问题,您想说gap而不是gab吗?很抱歉,这是WinForm,不是WPF。我想既然我使用了WinForm标签,就很清楚了。它与WPF或WinForms无关——填充、边距和布局在这两个地方以及web开发中都是相关的。我只是简单地把那篇文章链接起来,因为我认为它很好地解释了这些概念。祝你好运@马特部分同意布局评论,但是,在WPF中创建这样的静态布局并不可取。@benPearce静态布局很少是理想的,同意。然而,边距和填充不一定会导致静态布局。
myLabel.Left = start_y + y * (ucWidth + spacer);