在顶部:
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时都是相同的。
答案 0 :(得分:1)
有很多方法可以做到这一点...
仅存储最后放置的GroupBox并使用其Bounds.Bottom属性如何?如果该变量为null,则将其放置在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;
}