具体情况是 panel初始化后,通过点击按钮添加发现后,与具体存放位置不符,遂检查传入的X和Y坐标 发现没有问题后,再次检查其TOP和Height也没出错。
csharp
Label lbl = new Label();
lbl.Text = labelCount.ToString();
lbl.AutoSize = false;
lbl.Size = new Size(30, 22);
lbl.Name = "lbl" + labelCount.ToString();
int intX = 25 + int.Parse((labelCount - 1).ToString()) % 5 * 105;
int intY = 25 + int.Parse((labelCount - 1).ToString()) / 5 * 35;
lbl.Location = new Point(intX, intY);
最后发现是相对位置出现问题,lbl.Location存放位置 是根据你当前的panel左上角定位,也就说
如果你移动了panel,lbl存放的位置就会发生变化,所以解决方法就是 减去相对位移就可以解决了
csharp
// 关键:加上当前滚动偏移
scrollPos = pl.AutoScrollPosition;
actualLocation = new Point(intX + scrollPos.X, intY + scrollPos.Y);
lbl.Location = actualLocation;
pl.Controls.Add(lbl);
如图所示:
