MS Chart 中的范围栏

Range bar in MS Chart

我想像 link 那样生成柱状图:

但是,我得到这个错误:

这是我使用的代码:

        // AxisY
        chart1.ChartAreas.Add(CA);
        chart1.ChartAreas[1].AxisY.MajorGrid.Enabled = false;
        chart1.ChartAreas[1].AxisY.Interval = 1;

        // AxisX
        chart1.ChartAreas[1].AxisX.ScrollBar.Enabled = true;
        chart1.ChartAreas[1].AxisX.ScaleView.Zoomable = true;
        chart1.ChartAreas[1].AxisX.MajorGrid.Enabled = false;
        chart1.ChartAreas[1].AxisX.LabelStyle.Format = "yyyy-MM-dd hh:mm:ss";

        chart1.ChartAreas[1].AxisX.Interval = 0;
        chart1.ChartAreas[1].AxisX.IntervalType = DateTimeIntervalType.Years;

        minDate = new DateTime(2016, 01, 01, 00, 00, 00, 000);
        maxDate = new DateTime(2016, 12, 01, 00, 00, 00, 000); // or DateTime.Now;

        chart1.ChartAreas[1].Axes[0].Enabled = AxisEnabled.False;
        chart1.ChartAreas[1].Axes[1].Enabled = AxisEnabled.False;

        chart1.ChartAreas[1].BackColor = Color.Transparent;
        chart1.ChartAreas[1].Position.Height = 100;
        chart1.ChartAreas[1].Position.Width = 100;
        chart1.ChartAreas[1].InnerPlotPosition.Height = 90;
        chart1.ChartAreas[1].InnerPlotPosition.Width = 80;
        chart1.ChartAreas[1].InnerPlotPosition.X = 10;

        var series2 = new Series
        {
            Name = "S2",
            Color = Color.Black,
            ChartType = SeriesChartType.RangeBar,
            YValueType = ChartValueType.Auto,
            XValueType = ChartValueType.Auto
        };

        var values2 = new DateTime[3];
        values2[0] = minDate.AddMonths(2);
        values2[1] = minDate.AddMonths(4);
        values2[2] = minDate.AddMonths(6);

        series2.Points.AddXY(1, values2[1], values2[2]);

        series2["PointWidth"] = ".25";

        chart1.Series.Add(series2);

底轴是日期时间。左轴是固定的,并且有单词作为标签。我需要显示数据差距。

是的,乍一看这很奇怪,错误消息没有为您指明正确的方向。

原因是您在将系列添加到图表之前尝试向系列添加点。

RangeBar 不能与除条形图之外的任何其他图表类型组合。

因此 (?) 图表无法检查点是否以有效方式添加,而是声称您的系列仅接受一个 y 值。

解决方案:只需将 series2 添加到 Chart 之前 添加任何 DataPoints 就可以了..