显示垂直滚动条时控件位置发生变化

一旦显示面板的垂直滚动条,控件的位置就会发生变化。AutoScroll中的属性Panel已启用

代码:


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太远 这里是一个示例,它看起来如何 查看问题


MM们
浏览 144回答 2
2回答

蓝山帝景

你可以这样做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;    }}因此,对于布局场景,建议使用TableLayoutPanelorFlowLayoutPanel

茅侃侃

使用 FlowLayoutPanel 代替 Panel,并且不必设置 Position
打开App,查看更多内容
随时随地看视频慕课网APP