当值超出边界时,面板会自动滚动

时间:2015-05-29 11:46:33

标签: c# panel autoscroll panels

我遇到了面板问题。 我正在使用此代码向面板添加点数:

void panelDraw_Paint(object sender, PaintEventArgs e)
{
    if (this.MeasuredValue == null)
        return;

    var g = e.Graphics;

    int x = 0;

    foreach (value m in this.MeasuredValue )
    {
        double percentage = m.MeasuredValue [(int)this.MeetType].GetValueOrDefault() / this.MaxValue * (double)100;
        double y = this.Height / (double)100;
        double pixels = y * percentage;
        g.DrawRectangle(Pens.Green, x++, this.Height - (int)pixels, 1, 1);
        g.DrawLine(Pens.GhostWhite, 0, this.Height / 4, panelDraw.Width, this.Height / 4);
        g.DrawLine(Pens.GhostWhite, 0, this.Height / 2, panelDraw.Width, this.Height / 2);
        g.DrawLine(Pens.GhostWhite, 0, (this.Height / 4) * 3, panelDraw.Width, (this.Height / 4) * 3);
        if (x > panelDraw.Width)
        {
            panelDraw.AutoScroll = true;
        }
    }
}

我的面板尺寸为230; 218 当x离开边界(大于230)时,我想看到我的观点,但不知何故,autoscroll不起作用.. 我也从一开始就在面板属性中将AutoScroll设置为true,但这也不起作用。

这是我得到的,当x大于我的面板宽度时:

http://i60.tinypic.com/5fp7ur.jpg

当他们超出小组的界限时,我怎么能看到我的观点?

1 个答案:

答案 0 :(得分:0)

面板没有显示任何滚动条的原因是它不知道其内容的任何内容。即使它会滚动,视图也不会改变,因为在绘制内容时不考虑滚动位置。

您应该添加另一个具有适当大小的控件并在此控件上绘制,而不是直接绘制到面板上。这将为面板提供必要的滚动提示,您无需手动处理滚动。