Windows窗体图控件,多个系列不渲染

时间:2014-12-12 17:25:11

标签: vb.net charts

我一直在研究图表控件几天,并且已经看到在一个图表区域使用多个系列的DataBindXY应该有效。然而,我的工作不起作用。我已尝试在设计表单中设置属性,并在表单页面加载后面的代码中创建系列。第一个系列将呈现,但第二个系列不会。我尝试分成2个子例程并在加载时调用子例程,但这也不起作用。

关于如何在1线图上获得多个系列的任何想法?

    Chart1.Series.Add("EndBearing")
    Chart1.Series(0).ChartType = SeriesChartType.Line
    Chart1.Series(0).Points.DataBindXY(array1, array2)

    Chart1.Series.Add("Ult")
    Chart1.Series(0).ChartType = SeriesChartType.Line
    Chart1.Series(0).Points.DataBindXY(array3, array2)

3 个答案:

答案 0 :(得分:0)

将系列(0)更改为系列(" EndBearing") 并将第二个更改为系列(" Ult"):

Chart1.Series.Add("EndBearing")
Chart1.Series("EndBearing").ChartType = DataVisualization.Charting.SeriesChartType.Line
Chart1.Series("EndBearing").Points.DataBindXY(array1, array2)

Chart1.Series.Add("Ult")
Chart1.Series("Ult").ChartType = DataVisualization.Charting.SeriesChartType.Line
Chart1.Series("Ult").Points.DataBindXY(array3, array2)

参考:VB.NET Charts Tutorial

答案 1 :(得分:0)

试试这个,首先你必须从Chart的属性中添加这些系列,然后添加以下代码:

Chart1.Series("EndBearing").ChartType = SeriesChartType.Line
Chart1.Series("EndBearing").Points.DataBindXY(array1, array2)

Chart1.Series("EndBearing").ChartType = SeriesChartType.Line
Chart1.Series("EndBearing").Points.DataBindXY(array3, array2)

答案 2 :(得分:0)

请尝试这个:

            Dim myfont As New Font("Sans Serif", 20, FontStyle.Bold)
            dim rs as adodb.recordset  [connect your tablefield on table]
            'dim db as adodb.connection [connect your database]
            dim msg as string

            'Chart1
            Chart1.Titles.Add("")
            Chart1.Titles(0).Font = myfont

            Chart1.Series.Add("[series1]")
            Chart1.Series.Add("[series2]")
            Chart1.Series.Add("[series3]")
            Chart1.Series.Add("[series4]")

            Msg = "Select [grouping recored], Sum([series1]) As s1, Sum([series2]) As s2, Sum([series3]) As s3, Sum([series4]) As s4 "
            Msg = Msg & "From [table] "
            Msg = Msg & "Group By [grouping recored]"

            Rs = New ADODB.Recordset
            Rs.Open(Msg, Db, ADODB.CursorTypeEnum.adOpenStatic)
            While Rs.EOF <> True
                Chart1.Series("[series1]").Points.AddXY(Rs(0).Value, Rs(1).Value.ToString)
                Chart1.Series("[series2]").Points.AddXY(Rs(0).Value, Rs(2).Value)
                Chart1.Series("[series3]").Points.AddXY(Rs(0).Value, Rs(3).Value)
                Chart1.Series("[series4]").Points.AddXY(Rs(0).Value, Rs(4).Value)
                Rs.MoveNext()
            End While
            Rs.Close()                              

让我解释一下: 数据库我调用表单加载所以在这种情况下不需要昏暗的数据库。它会导致错误。

    Dim Loc As String
    Dim Db As ADODB.Connection

        Loc = Application.StartupPath & "\Database\[databasename].mdb"
        Msg1 = "Provider=Microsoft.Jet.OLEDB.4.0;" & Chr(10)
        Msg1 = Msg1 & "Data Source='" & Loc & "';" & Chr(10)
        Msg1 = Msg1 & "Jet OLEDB:Database Password=[databasepass]& Chr(10)

    Try
        Db = New ADODB.Connection
        Db.Open(Msg1)
    Catch ex As Exception
        MsgBox("Can't connect to Database" & vbCrLf & ex.Message)
    End Try

把它放在form_load源码上。 (对于sql连接或如何打开excel文件作为参考,你可以在互联网上搜索如何使用它。)

在这个公开案例上。您可以将垂直值(y轴)作为记录索引0,将其他索引作为水平(x轴)

所以它可能是这样的:

    Chart1.Series("[series1]").Points.AddXY(Rs(1).Value, Rs(0).Value)
    Chart1.Series("[series2]").Points.AddXY(Rs(2).Value, Rs(0).Value)
    Chart1.Series("[series3]").Points.AddXY(Rs(3).Value, Rs(0).Value)
    Chart1.Series("[series3]").Points.AddXY(Rs(4).Value, Rs(0).Value)

你可以尝试这段代码。

这是样本结果 Sample image

希望它可以帮助你和其他人。 感谢