为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
MM们 2023-07-09 17:27:28
一旦显示面板的垂直滚动条,控件的位置就会发生变化。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太远 这里是一个示例,它看起来如何 查看问题
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

你可以这样做


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


查看完整回答
反对 回复 2023-07-09
?
茅侃侃

TA贡献1842条经验 获得超21个赞

使用 FlowLayoutPanel 代替 Panel,并且不必设置 Position



查看完整回答
反对 回复 2023-07-09
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信