2017-02-22 17 views
0

Я хочу создать линейную диаграмму по datagridveiw Мне нужна красная линия графика цвета для отрицательных значений и зеленая для положительных значений. Я пишу код, но получаю только зеленый цвет для всех точек данных.как построить другой цвет для отрицательного datapoint в линейной диаграмме 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

Что такое 'Dchart'? Вы уверены, что у вас есть * данные со значением <0 –

+0

да данные со значениями <0 & Dchart - это имя диаграммы – Venkat

ответ

2

Вам нужно окрасить каждую DataPoint по отдельности:

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; 

Обратите внимание, что цвет переходит в только одну строку!

отметить также, что ваша оргия преобразование не очень нужен ..

Конечная нота: Вы добавляете все свои ценности как strings. Это серьезная ошибка! При этом потеряет все значения x и приведет к неконтролируемому преобразованию значений y по умолчанию.

Всегда добавить все значения как числа или DateTimes !!

Если вы обнаружили, что вам нужно преобразовать значение ячейки objects в номера, сделайте это и создайте DataPoint в целом, лучше всего включить цвет, прежде чем добавлять его с помощью series.Add()!

+0

Полученная ошибка не может неявно конвертировать bool в Drawing.color – Venkat

+0

Вероятно, вы имели в виду 'newPoint.Color = newPoint.YValues ​​[ 0] <0? Color.Red: Color.Green; ' – FCin

+0

Да! Исправленный.. – TaW