C# 使用滚动条值作为PaintEventArgs循环的参数

C# 使用滚动条值作为PaintEventArgs循环的参数,c#,winforms,event-handling,paintevent,C#,Winforms,Event Handling,Paintevent,我正在尝试创建一个windows.form,它使用水平滚动条作为时间控件。然后,时间值用作85个数组的数组索引,每个数组值(不是零)都包含一个方向角,然后在地图上显示为一条线。我遇到的问题是,我对C#和事件处理非常陌生,因此我无法找到将hScrollBar1_滚动的事件(和值)链接到PaintEventArgs循环的方法。下面是我尝试过的代码示例: private void hScrollBar1_Scroll(object sender, ScrollEventArgs e, [PaintEv

我正在尝试创建一个windows.form,它使用水平滚动条作为时间控件。然后,时间值用作85个数组的数组索引,每个数组值(不是零)都包含一个方向角,然后在地图上显示为一条线。我遇到的问题是,我对C#和事件处理非常陌生,因此我无法找到将hScrollBar1_滚动的事件(和值)链接到PaintEventArgs循环的方法。下面是我尝试过的代码示例:

private void hScrollBar1_Scroll(object sender, ScrollEventArgs e, [PaintEventArgs f])
int t = e.NewValue;
//There's a few lines of code here that convert the value of the scrollbar to time and
//display it in a box.
{
    for (int s = 1; s <= 85; s++)
    {
        if (ldata[s, t, 0] != 0)
        {
            DrawLinesPoint(s, t, null);
        }
    }
数组rdata[]是二维的,包含站点的参考数据;ldata[]是三维的,包含导入的数据

每次通过滚动条更改时间时,必须清除地图并更改显示的方位


有人能帮我写这段代码吗?我很有可能完全以错误的方式执行此操作,因此非常感谢您的帮助。

您不会从自己的代码调用
Paint
事件。Windows决定何时绘制(也可以通过调用
Invalidate
方法强制绘制)

相反,您应该做的是重写控件的
OnPaint
方法(在需要绘制时调用该方法),并在其中添加绘图代码:

    protected override void OnPaint(PaintEventArgs e) {
        // Add your drawing code here
    }
从那里,您可以调用其他具有逻辑的方法


为了得到更详细的答案,我们需要更多的代码,比如
rdata
ldata
。但我想你能理解。

谢谢,我现在明白我做错了什么。我以前很困惑,因为我把所有数据都保存在方法中,并试图通过方法调用来传递数据。我需要更多的练习。。。
    protected override void OnPaint(PaintEventArgs e) {
        // Add your drawing code here
    }