使用
一旦显示面板的垂直滚动条,控件的位置就会改变。 已启用 Panel
中的属性AutoScroll
法典:
int an = 10;
private void Incoming_Click(object sender, EventArgs e)
{
MsgItem item = new MsgItem ("testing");
item.Top = an;
an = item.Top + item.Height + 10;
panel2.Controls.Add(item);
}
滚动条显示时控件MsgItem
的位置太远 这里是一个示例 它的外观看到问题
你可以这样做
var count = panel2.Controls.Count;
MsgItem item = new MsgItem("testing");
item.Top = count == 0 ? 10 : (panel2.Controls[count - 1].Bottom + 10);
panel2.Controls.Add(item);
对于您的原始代码,即
int an = 10;
private void Incoming_Click(object sender, EventArgs e)
{
MsgItem item = new MsgItem("testing");
item.Top = an;
an = item.Top + item.Height + 10;
panel2.Controls.Add(item);
}
解决方案是跟踪面板的滚动
private void panel2_Scroll(object sender, ScrollEventArgs e)
{
switch (e.ScrollOrientation)
{
case ScrollOrientation.VerticalScroll:
var change = e.NewValue - e.OldValue;
an -= change;
break;
}
}
因此,对于使用TableLayoutPanel
或FlowLayoutPanel
的布局方案,建议
使用 FlowLayoutPanel 而不是 Panel并且您不必设置位置