C# ScrollableControl滚动条始终返回零

C# ScrollableControl滚动条始终返回零,c#,winforms,C#,Winforms,希望这是一个简单的一个 我从UserControl派生,并重写OnPaint。我希望这个控件是可滚动的,但我所希望的是能够得到滚动条的值,并处理自己绘制所有内容的位置。我已经建立了以下机制: // How the hell do I get this scrolling to not return to zero? this.Scroll += new ScrollEventHandler(TimelineControl_Scroll); this.HorizontalScroll.Enabl

希望这是一个简单的一个

我从
UserControl
派生,并重写
OnPaint
。我希望这个控件是可滚动的,但我所希望的是能够得到滚动条的值,并处理自己绘制所有内容的位置。我已经建立了以下机制:

// How the hell do I get this scrolling to not return to zero?
this.Scroll += new ScrollEventHandler(TimelineControl_Scroll);

this.HorizontalScroll.Enabled = true;
this.HorizontalScroll.Visible = true;
this.HorizontalScroll.Minimum = 0;

this.VerticalScroll.Enabled = false;
this.VerticalScroll.Visible = true;

this.AutoScroll = false;

我看到了滚动位置的新值。但是,滚动条始终返回到零。我做错了什么?

我无法对代码试图做的事情进行反向工程。AutoScroll是你的朋友。下面是一个例子:

public partial class UserControl1 : UserControl {
    public UserControl1() {
        InitializeComponent();
        this.SetStyle(ControlStyles.ResizeRedraw, true);
        this.AutoScroll = true;
        this.AutoScrollMinSize = new Size(1000, 0);
    }
    protected override void OnScroll(ScrollEventArgs se) {
        base.OnScroll(se);
        this.Invalidate();
    }
    protected override void OnPaint(PaintEventArgs e) {
        e.Graphics.TranslateTransform(this.AutoScrollPosition.X, this.AutoScrollPosition.Y);
        e.Graphics.DrawLine(Pens.Black, 0, 0, 1000, this.ClientSize.Height);
        base.OnPaint(e);
    }
}

完美的我害怕AutoScroll,因为我不理解文档,AutoScrollMinSize是一个很糟糕的名字,依我看,应该叫InnerWidth或MaxWidth之类的。这是可滚动控件的最大宽度,对吗?宽度是可见宽度。不管怎样,AutoScroll现在是我的朋友!非常感谢。我以前对图形做过一些翻译,但我只需要做一些相对较小的修改,就可以让它与这个新模型一起工作。再次感谢!