Vb.net 如何在vbnet中重新加载图表

Vb.net 如何在vbnet中重新加载图表,vb.net,charts,Vb.net,Charts,我有这个代码在Windows窗体程序中加载图表。它被放置在按钮单击事件处理程序中。当我第一次点击按钮时,图表显示OK。但在第二次单击时,它将显示错误“在“SeriesCollection”中找不到名为“Series1”的图表元素”。请参见代码中的。 我是VB新手,更不用说图表了,我不知道如何解决这个问题,所以我可以随时点击按钮重新加载图表。非常感谢你的建议 Dim pp As String = "J:\UCP\ApplicationsProgramming\MainDB.accdb" D

我有这个代码在Windows窗体程序中加载图表。它被放置在按钮单击事件处理程序中。当我第一次点击按钮时,图表显示OK。但在第二次单击时,它将显示错误“在“SeriesCollection”中找不到名为“Series1”的图表元素”。请参见代码中的。 我是VB新手,更不用说图表了,我不知道如何解决这个问题,所以我可以随时点击按钮重新加载图表。非常感谢你的建议

Dim pp As String = "J:\UCP\ApplicationsProgramming\MainDB.accdb"
    Dim strConn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & pp & ";Persist Security Info=False;"
    Dim tblFields As String = "SELECT Type, COUNT([Zone]) as CountZone FROM Faults GROUP BY Type "
    Dim conn As New OleDbConnection(strConn)
    Dim oCmd As New OleDbCommand(tblFields, conn)
    Dim oData As New OleDbDataAdapter(tblFields, conn)
    Dim ds As New DataSet

        conn.Open()
        oData.Fill(ds, "Faults")
        conn.Close()

'''''''''''''''''''''''''''''
'~~> SET DATA SOURCE <~~'
'''''''''''''''''''''''''''''
        Chart1.DataSource = ds.Tables("Faults")

''''''''''''''''''''''''''''''''
'~~> WORKING WITH CHARTAREA <~~'
''''''''''''''''''''''''''''''''
Dim CArea As ChartArea = Chart1.ChartAreas(0)
        CArea.BackColor = Color.White         
        CArea.ShadowColor = Color.Red           
        CArea.Area3DStyle.Enable3D = True       

'~~> Formatting X Axis
        CArea.AxisX.MajorGrid.Enabled = False   
        CArea.AxisX.LabelStyle.Font = New System.Drawing.Font("Arial", _
        10.0F, System.Drawing.FontStyle.Italic) 

'~~> Formatting Y Axis
        CArea.AxisY.MajorGrid.Enabled = False   
        CArea.AxisY.LabelStyle.Format = "" 
        CArea.AxisY.Interval = 0.1             

''''''''''''''''''''''''''''
'~~> WORKING WITH TITLE <~~'
''''''''''''''''''''''''''''
'~~> Adding a Title
Dim T As Title = Chart1.Titles.Add("Fault Types")
'~~> Formatting the Title
        With T
            .ForeColor = Color.Black          
            .BackColor = Color.White    

'~~> Setting Font, Font Size and Bold/Italicizing
            .Font = New System.Drawing.Font("Arial", 11.0F, System.Drawing.FontStyle.Bold)
            .BorderColor = Color.Black          
            .BorderDashStyle = ChartDashStyle.NotSet  
        End With

'''''''''''''''''''''''''''''
'~~> WORKING WITH SERIES <~~'
'''''''''''''''''''''''''''''

////// NEXT LINE WILL GIVE FOLLoWING ERROR:
////// "A chart element with the name 'Series1' could not be found in the 'SeriesCollection'."  //////////

Dim Series1 As Series = Chart1.Series("Series1")    <<<<<<<<<<
'~~> Setting the series Name
        Series1.Name = "Fault Types"
'~~> Assigning values to X and Y Axis

        Chart1.Series(Series1.Name).XValueMember = "Type"
        Chart1.Series(Series1.Name).YValueMembers = "CountZone"
'~~> Setting Font, Font Size and Bold
        Chart1.Series(Series1.Name).Font = New System.Drawing.Font("Arial", 10.0F, System.Drawing.FontStyle.Bold)
'~~> Setting Value Type
        Chart1.Series(Series1.Name).YValueType = ChartValueType.Double
'~~> Setting the Chart Type for Display 
'Chart1.Series(Series1.Name).ChartType = SeriesChartType.Radar
        Chart1.Series(Series1.Name).ChartType = SeriesChartType.Pie
'~~> Display Data Labels
        Chart1.Series(Series1.Name).IsValueShownAsLabel = True
'~~> Setting label's Fore Color
        Chart1.Series(Series1.Name).LabelForeColor = Color.FloralWhite
'~~> Setting label's Format to %age
        Chart1.Series(Series1.Name).LabelFormat = "" '"0.0%"

'~~> Setting the location for the chart
        Chart1.Size = New System.Drawing.Size(865, 350)
Dim pp As String=“J:\UCP\ApplicationsProgramming\MainDB.accdb”
Dim strConn As String=“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=“&pp&”Persist Security Info=False;”
Dim tblFields As String=“选择类型,按类型从故障组中将([Zone])计数为CountZone”
作为新OLEDB连接(strConn)的Dim conn
Dim oCmd作为新的OLEDB命令(康涅狄格州tblFields)
Dim oData作为新的OLEDB数据适配器(tblFields,conn)
Dim ds作为新数据集
康涅狄格州公开赛
oData.填充(ds,“故障”)
康涅狄格州关闭
'''''''''''''''''''''''''''''
“~~>设置数据源格式设置Y轴
CArea.AxisY.MajorGrid.Enabled=False
CArea.AxisY.LabelStyle.Format=“”
CArea.AxisY.Interval=0.1
''''''''''''''''''''''''''''
“~~>使用标题添加标题
尺寸T作为标题=图表1.标题.添加(“故障类型”)
“~~>格式化标题
与T
.ForeColor=颜色。黑色
.BackColor=Color.White
“~~>设置字体、字号和粗体/斜体
.Font=新系统.Drawing.Font(“Arial”,11.0F,系统.Drawing.FontStyle.Bold)
.BorderColor=颜色。黑色
.BorderDashStyle=ChartDashStyle.NotSet
以
'''''''''''''''''''''''''''''

“~~>处理系列行
Series1.Name=“故障类型”
更改系列的名称

因此,单击后,下一次调用
Dim Series1 As Series=Chart1.Series(“Series1”)
将失败


如果您只使用一个系列,则应尝试使用
Dim Series1 As Series=Chart1.Series(0)
Series1.Name=“Fault Types”
更改系列名称

因此,单击后,下一次调用
Dim Series1 As Series=Chart1.Series(“Series1”)
将失败


如果您只使用一个系列,您应该尝试将Dim Series1设置为Series=Chart1。Series(0)

这是完整的单击处理程序吗?图表对象在哪里初始化,系列1在哪里第一次添加?我想说的是,一些代码在这个处理程序之外清除了您的图表1,而这个处理程序缺少系列的初始化代码是的,这是完整的代码,我刚刚删除了设置图例的部分,但是没有其他代码处理我仔细检查过的图表…这一行:Series1.Name=“Fault Types”更改了系列名称。单击后,这条线Chart1.Series(“Series1”)应该是Chart1.Series(“故障类型”)…;-)我想Chart1.Series(0)如果只有一个serieRight就好了:)请随意回答,这样我就可以接受它了……这是完整的单击处理程序吗?图表对象在哪里初始化,系列1在哪里第一次添加?我想说的是,一些代码在这个处理程序之外清除了您的图表1,而这个处理程序缺少系列的初始化代码是的,这是完整的代码,我刚刚删除了设置图例的部分,但是没有其他代码处理我仔细检查过的图表…这一行:Series1.Name=“Fault Types”更改了系列名称。单击后,这条线Chart1.Series(“Series1”)应该是Chart1.Series(“故障类型”)…;-)我想Chart1.Series(0)会很好,如果你只有一个serieRight:)请随意回答,这样我就可以接受了。。。