在顶部。
private int gap = 0;
然后在一个按钮点击事件。
private void btnADD_Click(object sender, EventArgs e)
{
var fsd = new FolderSelectDialog();
fsd.Title = "What to select";
fsd.InitialDirectory = @"c:\";
if (fsd.ShowDialog(IntPtr.Zero))
{
AddGroupBox(Path.GetFileName(fsd.FileName));
}
}
和AddGroupBox方法。
private void AddGroupBox(string Name)
{
gap = gap + 83;
GroupBox gb = new GroupBox();
gb.Location = new Point(3, gap);
gb.Size = new Size(1311, 100);
gb.BackColor = SystemColors.Window;
gb.Text = Name;
this.Controls.Add(gb);
}
第一次在y上的位置是83,下一次在y上的位置是166,但是在1660上的新的groupBox仍然有一些接触到第一个groupBox或者在里面。
我不希望它们之间有空间,我希望第一个和下一个的边框会互相接触,就像新的和第一个的底部有一个共同的边框一样,每次添加一个新的groupBox时也是如此。
有很多方法可以做到这一点...
不如直接存储最后放置的GroupBox并使用它的Bounds.Bottom属性? 如果该变量为空,则放置在83的初始位置。
就像这样
private int startingY = 83;
private GroupBox lastGB = null;
private void AddGroupBox(string Name)
{
GroupBox gb = new GroupBox();
gb.Location = new Point(3, (lastGB==null ? startingY : lastGB.Bounds.Bottom));
gb.Size = new Size(1311, 100);
gb.BackColor = SystemColors.Window;
gb.Text = Name;
this.Controls.Add(gb);
lastGB = gb;
}