我的表单上有一个图表,并创建了一个子图表,它将添加一个新图表。这很好用。 如果添加的图表是整个图表中的第一个图表,我希望它是红色的。如果新图形不是第一个,我希望它是蓝色的。这是我的代码:
Public Shared Sub graphHinzufügen(pfad As String)
'Daten aus Datei lesen und Graphen erstellen/formatieren
DateiWiderstand.wertepaareAusDateiLesen(pfad)
Hauptseite.ChartWiderstand.Series.Add(System.IO.Path.GetFileName(pfad))
With Hauptseite.ChartWiderstand.Series(System.IO.Path.GetFileName(pfad))
.ChartType = DataVisualization.Charting.SeriesChartType.Spline
For i = 0 To DateiWiderstand.wertepaarGeschwindigkeit.Count - 1
.Points.AddXY(DateiWiderstand.wertepaarGeschwindigkeit.Item(i), DateiWiderstand.wertepaarWiderstand.Item(i))
Next i
If Hauptseite.ChartWiderstand.Series.Count = 1 Then 'ToDo: Funktioniert noch nicht bei erster Zeile!?
.Color = Color.Red
Else
.Color = Color.Blue
End If
End With
End Sub
问题在于.Color = Color.Red
没有像它应该的那样工作。
我尝试调试:
.Color = Color.Red
,图表会根据需要切换颜色。所以这应该是为图表着色的正确代码。我的错误在哪里?如果您需要更多代码,请告诉我您想要哪些类。 谢谢!
编辑:以下是与我的问题相关的所有代码。欢迎所有评论和提示。 :)
Public Class Hauptseite
Private Sub Hauptseite_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Alle Reiter mit den temp-Dateien füllen
ImportExportWiderstand.ReiterWiderstandImportieren()
End Sub
Private Sub ButtonWiderstandHinzufügen_Click(sender As Object, e As EventArgs) Handles ButtonWiderstandHinzufügen.Click
'Datei im DGV hinzufügen und Graphen erstellen
Dim widerstandDateiWähler As New OpenFileDialog
If widerstandDateiWähler.ShowDialog = Windows.Forms.DialogResult.OK Then
Try
DiagrammWiderstand.graphHinzufügen(widerstandDateiWähler.FileName)
With Me.DataGridViewWiderstand
.Rows.Add()
.Rows(.RowCount - 1).Cells(0).Value = System.IO.Path.GetFileName(widerstandDateiWähler.FileName)
.Rows(.RowCount - 1).Cells(1).Value = widerstandDateiWähler.FileName
End With
Catch ex As Exception
MsgBox("Datei kann nicht hinzugefügt werden. Wahrscheinlich ist der Dateiname schon vorhanden.")
End Try
End If
End Sub
Private Sub ButtonWiderstandEntfernen_Click(sender As Object, e As EventArgs) Handles ButtonWiderstandEntfernen.Click
'Graphen löschen und Datei aus dem DGV entfernen
With Me.DataGridViewWiderstand
Try
DiagrammWiderstand.graphEntfernen(Me.DataGridViewWiderstand.SelectedRows(0).Cells(1).Value)
.Rows.Remove(.SelectedRows(0))
Catch ex As Exception
End Try
End With
End Sub
Private Sub Hauptseite_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
'alle Informationen aus den Reitern in temp-Dateien schreiben
ImportExportWiderstand.ReiterWiderstandExportieren()
End Sub
Private Sub DataGridViewWiderstand_RowEnter(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridViewWiderstand.RowEnter
'bei Zeilenwechsel Farben der Graphen aktualisieren
DiagrammWiderstand.FarbeDerGraphenAktualisieren(Me.DataGridViewWiderstand.Rows(e.RowIndex).Cells(1).Value)
End Sub
End Class
Public Class DiagrammWiderstand
Public Shared Sub graphHinzufügen(pfad As String)
'Daten aus Datei lesen und Graphen erstellen/formatieren
DateiWiderstand.wertepaareAusDateiLesen(pfad)
Hauptseite.ChartWiderstand.Series.Add(System.IO.Path.GetFileName(pfad))
With Hauptseite.ChartWiderstand.Series(System.IO.Path.GetFileName(pfad))
.ChartType = DataVisualization.Charting.SeriesChartType.Spline
For i = 0 To DateiWiderstand.wertepaarGeschwindigkeit.Count - 1
.Points.AddXY(DateiWiderstand.wertepaarGeschwindigkeit.Item(i), DateiWiderstand.wertepaarWiderstand.Item(i))
Next i
If Hauptseite.ChartWiderstand.Series.Count = 1 Then 'ToDo: Funktioniert noch nicht bei erster Zeile!?
.Color = Color.Red
Else
.Color = Color.Blue
End If
End With
End Sub
Public Shared Sub graphEntfernen(pfad As String)
'spezifischen Graphen aus Diagramm entfernen
If pfad <> Nothing Then
Hauptseite.ChartWiderstand.Series.Remove(Hauptseite.ChartWiderstand.Series(System.IO.Path.GetFileName(pfad)))
End If
End Sub
Public Shared Sub aktuellenGraphFärben(pfad As String)
'spezifischen Graphen rot färben
If pfad <> Nothing Then
Hauptseite.ChartWiderstand.Series(System.IO.Path.GetFileName(pfad)).Color = Color.Red
End If
End Sub
Public Shared Sub alleGraphenEntfärben()
'alle Graphen im Diagram blau färben
With Hauptseite.ChartWiderstand
If .Series.Count <> 0 Then
For i = 0 To .Series.Count - 1
.Series(i).Color = Color.Blue
Next
End If
End With
End Sub
Public Shared Sub FarbeDerGraphenAktualisieren(pfad As String)
'Farben der Graphen im Diagramm aktualisieren (durch entfärben und färben)
alleGraphenEntfärben()
aktuellenGraphFärben(pfad)
End Sub
End Class
答案 0 :(得分:0)
我设法通过重新组织我的代码解决了我的问题。通过每次添加行时调用自写更新方法,删除或输入图形的颜色就像我希望的那样变化。以下是相关代码:
#Region "Reiter Widerstand"
Private Sub ButtonWiderstandHinzufügen_Click(sender As Object, e As EventArgs) Handles ButtonWiderstandHinzufügen.Click
Dim widerstandDateiWähler As New OpenFileDialog
If widerstandDateiWähler.ShowDialog = Windows.Forms.DialogResult.OK Then
CChartWiderstand.graphHinzufügen(widerstandDateiWähler.FileName)
CDGVWiderstand.zeileHinzufügen(widerstandDateiWähler.FileName)
CChartWiderstand.FarbeDerGraphenAktualisieren(Me.DataGridViewWiderstand.SelectedRows(0).Cells(1).Value)
End If
End Sub
Private Sub ButtonWiderstandEntfernen_Click(sender As Object, e As EventArgs) Handles ButtonWiderstandEntfernen.Click
With Me.DataGridViewWiderstand
If .SelectedRows.Count > 0 Then
CChartWiderstand.graphEntfernen(.SelectedRows(0).Cells(1).Value)
CDGVWiderstand.zeileEntfernen(.SelectedRows(0).Cells(1).Value)
If .SelectedRows.Count > 0 Then
CChartWiderstand.FarbeDerGraphenAktualisieren(.SelectedRows(0).Cells(1).Value)
End If
End If
End With
End Sub
Private Sub DataGridViewWiderstand_RowEnter(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridViewWiderstand.RowEnter
CChartWiderstand.FarbeDerGraphenAktualisieren(Me.DataGridViewWiderstand.Rows(e.RowIndex).Cells(1).Value)
End Sub
#End Region
和此:
Public Shared Sub aktuellenGraphFärben(pfad As String)
If prüfenObGraphExistiert(pfad) Then
Hauptseite.ChartWiderstand.Series(System.IO.Path.GetFileName(pfad)).Color = Color.Red
End If
End Sub
Public Shared Sub alleGraphenEntfärben()
With Hauptseite.ChartWiderstand
If .Series.Count <> 0 Then
For i = 0 To .Series.Count - 1
.Series(i).Color = Color.Blue
Next
End If
End With
End Sub
Public Shared Sub FarbeDerGraphenAktualisieren(pfad As String)
alleGraphenEntfärben()
aktuellenGraphFärben(pfad)
End Sub