Jump to content
Sign in to follow this  
Chamuanza

Erro ao Abrir Form de Grafico

Recommended Posts

Chamuanza

Olá Pessoal um Bem Aja a todos

estou com um pequeno problema e preciso de ajuda (tenho andado a rabiar mas não dou com a solução)

Tenho uma FORM que abre com um grafico - funciona bem, no entanto depois de fechar a Form se voltar a abrir aparece-me este erro: "A chart element with the name 'Series 1' already exists in the 'SeriesCollection'." na linha em que defino a Variavel

Dim series As Series = Chart1.Series.Add("Series 1")

O Código para carregar o grafico:

Private Sub frmGraficoTotoloto_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated

        Dim xNumerosToto(49) As Byte


        For T = 1 To 49
            xNumerosToto(T) = T
        Next


        'Conta os numeros Saidos do Totoloto
        Dim yContagemToto(49) As Integer

        For i As Integer = 1 To 49
            For Linhas = 0 To SaidosTotolotoDataGridView.RowCount - 1
                For Colunas = 0 To 4
                    If SaidosTotolotoDataGridView.Item(Colunas, Linhas).Value = i Then
                        yContagemToto(i) += 1
                    End If
                Next Colunas
            Next Linhas
        Next i

        '*****************************************************************************************
        'Conta numero da sorte do totoloto

        Dim yContaNumSorteToto(13) As Byte
        Dim xNumSorte(13) As Byte


        For T = 1 To 13
            xNumSorte(T) = T
        Next


        For V As Integer = 1 To 13
            For Linhas = 0 To SaidosTotolotoDataGridView.RowCount - 1
                For Colunas = 5 To 5
                    If SaidosTotolotoDataGridView.Item(Colunas, Linhas).Value = V Then
                        yContaNumSorteToto(V) += 1
                    End If
                Next Colunas
            Next Linhas
        Next V

        '********************************************************************************************


        Dim series As Series = Chart1.Series.Add("Series 1")



        With Chart1
            'define o tipo de gráfico
           
            ' Set Cylinder drawing style
            Chart1.Series(0)("DrawingStyle") = "Cylinder"
            Chart1.Series(1)("DrawingStyle") = "Cylinder"


            'define o texto da legenda 
            .Series(0).LegendText = "Nºs Saídos Totoloto"

            .Series(1).LegendText = "Nº da Sorte"

            'define o titulo do eixo y , sua fonte e a cor
            .ChartAreas(0).AxisY.Title = "Nº Vezes Saidos"
            .ChartAreas(0).AxisY.TitleFont = New Font("Times New Roman", 12, FontStyle.Bold)
            .ChartAreas(0).AxisY.TitleForeColor = Color.Blue

            'define o titulo do eixo x , sua fonte e a cor
            .ChartAreas(0).AxisX.Title = "Nºs Totoloto (1 a 49)"
            .ChartAreas(0).AxisX.TitleFont = New Font("Times New Roman", 10, FontStyle.Bold)
            .ChartAreas(0).AxisX.TitleForeColor = Color.Blue

            'define a paleta de cores usada
            .Palette = ChartColorPalette.Fire

            'vincula os dados ao gráfico
            .Series(0).Points.DataBindXY(xNumerosToto, yContagemToto)
            .Series(1).Points.DataBindXY(xNumSorte, yContaNumSorteToto)

           
            'habilita a exibição 3D
            .ChartAreas(0).Area3DStyle.Enable3D = True

            .ChartAreas(0).Area3DStyle.Rotation = 30


            ' Set interval of X axis to 1 week, with an offset of 1 day
            Chart1.ChartAreas(0).AxisX.IntervalAutoMode = IntervalAutoMode.VariableCount
          
            Chart1.ChartAreas(0).AxisX.IntervalType = DateTimeIntervalType.Number
            Chart1.ChartAreas(0).AxisX.IntervalOffset = 2
           
            ' Equally sized auto-fit font for all axes
            Chart1.ChartAreas(0).IsSameFontSizeForAllAxes = True

            ' Set series points width to 20 pixels
            Chart1.Series(0)("PixelPointWidth") = "5"
            Chart1.Series(1)("PixelPointWidth") = "5"


            ' Enable X axis labels automatic fitting
            Chart1.ChartAreas(0).AxisX.IsLabelAutoFit = True

            ' Set docking of the legend title
            Chart1.Legends(0).Docking = Docking.Bottom

            ' Set chart title
            Chart1.Titles(0).Text = "TOTOLOTO" & ControlChars.Lf & "Nºs SAÍDOS"
            ' Set chart title font
            Chart1.Titles(0).Font = New Font("Times New Roman", 14, FontStyle.Bold)
            ' A cor foi activada nas propriedades


          
        End With




    End Sub

Share this post


Link to post
Share on other sites
Caça

Antes de adicionar as séries

Chart1.Series.Clear()


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Chamuanza

Oi Caça Boa Noite

Após colocar antes da variavel "Dim series As Series = Chart1.Series.Add("Series 1")" aparece-me este erro:

Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

na linha:

Chart1.Series(1)("DrawingStyle") = "Cylinder"

tambem tentei colocar o clear no Botão antes de fechar a form dá o mesmo erro

Share this post


Link to post
Share on other sites
Caça

Se só adicionaste uma serie, o index dessa serie é o 0 não o 1(os indexes começam sempre em 0)

Chart1.Series(0)("DrawingStyle") = "Cylinder"


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Chamuanza

Oi Caça

Pelo que entendo e em relação ao código que apresento em cima devo mudar tudo o que tem Serie(1) para ´Serie(0) ?

Share this post


Link to post
Share on other sites
Caça

Se só tens uma série no gráfico, sim.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Chamuanza

Pois é o problema é que tenho duas series no grafico como podes ver no codigo

'vincula os dados ao gráfico
            .Series(0).Points.DataBindXY(xNumerosToto, yContagemToto)
            .Series(1).Points.DataBindXY(xNumSorte, yContaNumSorteToto)

Share this post


Link to post
Share on other sites
Caça

Então tens a serie 0 e a serie 1.

Qual é o problema?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Chamuanza

O problema é  a descrição que apresento no inicio do topico

Quando abro o Form fenciona bem aparece o grafico, fecho o Form e se o reabrir aparece-me o erro:

"A chart element with the name 'Series 1' already exists in the 'SeriesCollection'." na linha em que defino a Variavel

Dim series As Series = Chart1.Series.Add("Series 1")

Share this post


Link to post
Share on other sites
Caça

Antes de adicionar as séries

Chart1.Series.Clear()

:P


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.