动态加载控件出现的位置错乱问题
采用代码动态添加控件
btn.Top = BtnTop ;
btn.Height = 49;
BtnTop += btn.Height + 1;
this.Controls.Add(btn);
当控件太多时会出现滚动条,当拖动滚动条后再用上面的代码加载控件,
就会出现下图那样的位置错乱
原因在于winform大部分控件的Y坐标0点是从可视区域算起。如果想要正常显示,
我们需要把已经上拉部分的高度减去。
这个时候可以使用 AutoScrollPosition.Y属性,这个属性可以知道上拉了多少像素。
注意这个属性的数值都是负的,所以改成下面的代码就可以正常显示了。
btn.Top = BtnTop + this.AutoScrollPosition.Y;
btn.Height = 49;
BtnTop += btn.Height + 1;
this.Controls.Add(btn);