Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c线图。为什么我的线变为0而不是停留在最后一点?_C#_Charts - Fatal编程技术网

C# c线图。为什么我的线变为0而不是停留在最后一点?

C# c线图。为什么我的线变为0而不是停留在最后一点?,c#,charts,C#,Charts,所以我制作了一个按钮,当你们按下它时,它会显示一个数组的图形,但当它完成时,它会变为0 private void button14_Click(object sender, EventArgs e) { for (int i = 0; i <= period; i++) { xos[i] = i+1; yos[i] = pot[i]; listBox1.Items.Add(xos

所以我制作了一个按钮,当你们按下它时,它会显示一个数组的图形,但当它完成时,它会变为0

private void button14_Click(object sender, EventArgs e)
    {
        for (int i = 0; i <= period; i++)
        {
            xos[i] = i+1;
            yos[i] = pot[i];
            listBox1.Items.Add(xos[i]);
            listBox1.Items.Add("y " + yos[i]);
        }

        for (int i = 0; i <= period; i++)
        {
         x2os[i] = i + 1;
         y2os[i] = pot2[i];
         listBox2.Items.Add(x2os[i]);
         listBox2.Items.Add("y "+y2os[i]);

        }
        chart1.ChartAreas[0].AxisX.Minimum = 0;
        chart1.Series["Potražnja"].Points.DataBindXY(xos, yos);
        chart1.Series["Predviđanje"].Points.DataBindXY(x2os,y2os);
    }
private void按钮14\u单击(对象发送者,事件参数e)
{

对于(int i=0;i在知道数组需要多长时间之前不要创建数组,只需声明引用即可:

public double[] xos;
public double[] yos;
public double[] y2os;
public double[] x2os;
然后在使用它们时,创建实际阵列:

private void button14_Click(object sender, EventArgs e)
{
    xos = new double[period + 1];
    yos = new double[period + 1];
    x2os = new double[period + 1];
    y2os = new double[period + 1];
    for (int i = 0; i <= period; i++)
    {
        xos[i] = i+1;
        yos[i] = pot[i];
        listBox1.Items.Add(xos[i]);
        listBox1.Items.Add("y " + yos[i]);
    }
    for (int i = 0; i <= period; i++)
    {
         x2os[i] = i + 1;
         y2os[i] = pot2[i];
         listBox2.Items.Add(x2os[i]);
         listBox2.Items.Add("y "+y2os[i]);

    }
    chart1.ChartAreas[0].AxisX.Minimum = 0;
    chart1.Series["Potražnja"].Points.DataBindXY(xos, yos);
    chart1.Series["Predviđanje"].Points.DataBindXY(x2os,y2os);
 }
private void按钮14\u单击(对象发送者,事件参数e)
{
xos=新的双精度[周期+1];
yos=新的双精度[周期+1];
x2os=新的双精度[周期+1];
y2os=新的双[周期+1];

对于(int i=0;i这里是图表的一张照片(我无法上传)
x2os
y2os
的长度是多少?它们的长度是否不同于
period+1
?长度由用户定义,与period+1相同。而xos和yos只是“period”。很抱歉,我不知道如何格式化。编辑:我把句号+1放在for循环中,其中x2o和y2o是。现在我知道了,但还有一个问题,我如何在x=5时停止它,就像你在图片中看到的,这样它就不会转到x=6?编辑:怎么做,黄线从x=4开始,而不是x=3?如果你在循环中使用
句号+1
,那么数组长度必须是
period+2
。数据序列和数组一样长,所以要让它更快结束,你应该让数组更短。嗯,现在它跳过了零,但仍然从0开始画线。图片:当我创建XO和YO时,我删除了+1,因为它们和period一样长,而且可以工作,现在只有黄线。@cymenx:对,您需要将索引0中的坐标放在数组中,并使数组变短。我更正了上面的代码。非常感谢您的帮助:)。我刚刚编辑了x2os[I]=I+(start+1);它工作得非常好。再次感谢:D@cymenx:是的,你说得对,我忘了调整x坐标。
    var start = 0;
    while (start <= period && pot2[start] == 0) {
      start++;
    }
    x2os = new double[period - start + 1];
    y2os = new double[period - start + 1];
    for (int i = 0; i <= period - start; i++)
    {
         x2os[i] = start + i + 1;
         y2os[i] = pot2[start + i];
         listBox2.Items.Add(x2os[i]);
         listBox2.Items.Add("y "+y2os[i]);

    }