2017-02-22 1 views
0

Je veux créer un graphique linéaire par datagridveiw J'ai besoin d'une ligne de tracé de couleur rouge pour les valeurs négatives et de vert pour les valeurs positives. J'écris le code mais je reçois seulement la couleur verte pour tous les points de données.comment tracer une couleur différente pour un point de données négatif dans le graphique linéaire C#

foreach (DataGridViewRow row in dgvReport.Rows) 
{ 
    decimal val = 0; 
    val = Convert.ToDecimal(row.Cells[8].Value.ToString()); 
    if (val < 0) 
    { 
     Dchart.Series[0].Color = System.Drawing.Color.Red; 
    } 
    if (val > 0) 
    { 
     Dchart.Series[0].Color = System.Drawing.Color.Green; 
    } 
    Dchart.Series[0].Points.AddXY(row.Cells[0].Value.ToString(), row.Cells[8].Value.ToString()); 
    Dchart.ChartAreas[0].AxisX.Interval = 3; 
} 
+0

Qu'est-ce que 'Dchart'? Etes-vous sûr que * have * data avec la valeur <0 –

+0

oui les données avec les valeurs <0 & Dchart est le nom du graphique – Venkat

Répondre

2

Vous devez colorer chaque DataPoint individuellement:

int index = Dchart.Series[0].Points.AddXY(row.Cells[0].Value, 
              row.Cells[8].Value); 
DataPoint newPoint = Dchart.Series[0].Points[index]; 
newPoint.Color = newPoint.YValues[0] < 0 ? Color.Red : Color.Green; 

Notez que la couleur va dans une seule ligne!

Notez également que votre orgie de conversion est pas vraiment nécessaire ..

Note finale: Vous ajoutez toutes vos valeurs strings. C'est une erreur grave! En procédant ainsi, perdra toutes les valeurs x et entraînera une conversion par défaut incontrôlée des valeurs y.

toujours ajouter toutes les valeurs sous forme de nombres ou DateTimes !!

Si vous trouvez que vous devez convertir la valeur de la cellule objects aux numéros et ainsi se créer la DataPoint dans son ensemble, y compris la meilleure couleur avant d'ajouter avec series.Add()!

+0

obtenu erreur ne peut pas implicitement convertir bool en Drawing.color – Venkat

+0

Vous avez probablement voulu dire 'newPoint.Color = newPoint.YValues ​​[ 0] <0? Color.Red: Color.Green; ' – FCin

+0

Oui! Corrigée.. – TaW