【问题标题】:Dynamic panel element adding and scrollbars动态面板元素添加和滚动条
【发布时间】:2012-02-11 17:00:52
【问题描述】:

我写了一个函数来动态添加元素到“面板”。

public int State;        
public Point Point = new Point(0, 0);
public void DialogAdd(string message, string author)
        {
            var d = new DialogMessage();
            if(State == 0)
            {
                d.BackColor = Color.FromArgb(255, 237, 241, 245);
                State = 1;
            }
            else
            {
                State = 0;
            }


            d.Controls["name"].Text = author;
            d.Location = new Point(0, Point.Y);
            d.Controls["msg"].Text = message;
            Point.Y += d.Size.Height;
            Controls["panel1"].Controls.Add(d);

        }

DialogMessage 是 UserControl,在所有组件上都具有属性“AutoSize=true”。 这个面板有 AutoScroll 属性,所以有滚动条。 问题在于元素的添加方式不同,具体取决于滚动条的位置。如果滚动条在顶部,则根据需要全部添加。

但是如果在底部添加滚动条的时候,那么添加项就出错了

请告诉我我做错了什么以及如何解决?谢谢你。抱歉英语不好

【问题讨论】:

  • 能否添加信息并标记您正在使用的 API?我的猜测是 windows 窗体,但如果你添加正确的标签,你会接触到更多的人。
  • 现在,我使用 FlowLayoutPanel 解决了这个问题,但我仍然想知道,我做错了什么:)

标签: c# .net winforms panel


【解决方案1】:

将控件放置在面板内时,必须补偿滚动位置:

基本上,尝试使用这一行:

d.Location = new Point(0, panel1.AutoScrollPosition.Y + Point.Y);

【讨论】:

    猜你喜欢
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 2020-05-29
    • 1970-01-01
    相关资源
    最近更新 更多