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

时间:2012-02-23 22:24:30

标签: c# winforms loops grid

我需要在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++;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

我认为您可能正在寻找填充,但请查看this link (MSDN),您应该能够根据自己的要求决定什么。

答案 1 :(得分:1)

myLabel.Left = start_y + (y * ucWidth + spacer);

你的括号在错误的地方。它相当于:

var real_start_y = start_y + spacer;
myLabel.Left = real_start_y + (y * ucWidth);

你想要的是

myLabel.Left = start_y + y * (ucWidth + spacer);

以便每列添加spacer与前一列的分离。

计算Top时会遇到同样的问题。