【问题标题】:How to reload Chart in VB NET如何在 VB NET 中重新加载图表
【发布时间】:2012-11-23 17:00:11
【问题描述】:

我有这段代码可以在 Windows 窗体程序中加载图表。它被放置在按钮单击事件处理程序中。当我单击按钮第一次显示图表时,确定。但在第二次单击时,它会给我错误“在 '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)

【问题讨论】:

  • 这是完整的点击处理程序吗?图表对象在哪里初始化和第一次添加 Series1 ?我会说一些代码在此处理程序之外清除了您的 Chart1,然后缺少该系列的初始化代码
  • 是的,这是完整的代码,我刚刚删除了用于设置图例的部分,但没有其他代码可以处理我仔细检查的图表...
  • 这一行:Series1.Name = "Fault Types" 更改系列名称。点击后,这一行 Chart1.Series("Series1") 应该是 Chart1.Series("Fault Types")... ;-) 我猜 Chart1.Series(0) 如果你只有一个系列会很好
  • 对 :) 随意将其作为答案,以便我接受...

标签: vb.net charts


【解决方案1】:

Series1.Name = "Fault Types" 行更改了系列的名称。

因此,点击后,对Dim Series1 As Series = Chart1.Series("Series1") 的下一次调用将失败。

如果你只用一个系列,你应该试试Dim Series1 As Series = Chart1.Series(0)

【讨论】:

    猜你喜欢
    • 2015-08-29
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多