Как создать всплывающую подсказку для диаграммы с датой (формат DateTime) - PullRequest
0 голосов
/ 26 декабря 2018

Я не могу получить подсказку в правильном формате

foreach (RootObject o in myRootObjects)
{ 
    seriesTemperatur.Points.AddXY(DateTime.Parse(o.datum), o.temp);               
    seriesPressure.Points.AddXY(DateTime.Parse(o.datum),  o.pressure);
}

__

private void chart2_GetToolTipText(object sender, ToolTipEventArgs e)
{
    switch (e.HitTestResult.ChartElementType)
    {
        case ChartElementType.DataPoint:
            var dataPoint = e.HitTestResult.Series.Points[e.HitTestResult.PointIndex];
            e.Text = string.Format("Temperatur C:\t{1}\nData: {0}", dataPoint.XValue, dataPoint.YValues[0]);
            break;
    }
}

Как дата в dataPoint.XValue я получаю

dataPoint {{X=43459,6591203704, Y=3,19}}, 

Но мне нужно X = "2018-11-22 ЧЧ: мм".

var dataPoint = e.HitTestResult.Series.Points[e.HitTestResult.PointIndex];
e.Text = string.Format("Temperatur C:\t{1}\nData: {0}", dataPoint.XValue, dataPoint.YValues[0]);

я получаю:

dataPoint {{X = 43459,6591203704, Y = 3,19}} System.Windows.Forms.DataVisualization.Charting.DataPoint

AxisLabel пуст

    AxisLabel   ""  string

Ответы [ 3 ]

0 голосов
/ 26 декабря 2018
0 голосов
/ 26 декабря 2018

Если ваши значения были добавлены как DateTime, и вы хотите отформатировать их для какой-либо другой цели, кроме Label (которая должна иметь возможность использовать его строку Format), вам нужно будет преобразовать их.То же самое применимо, если вы хотите выполнить другую обработку, такую ​​как сравнения или фильтры и т. Д.

Фактически все добавленные вами значения диаграммы всегда преобразуются в double.Поэтому вам нужно использовать функцию преобразования FromOADate :

var dataPoint = e.HitTestResult.Series.Points[e.HitTestResult.PointIndex];
DateTime dtx = DateTime.FromOADate(dataPoint.XValue);
e.Text = string.Format("Temperatur C:\t{1}\nData: {0}", dtx, dataPoint.YValues[0]);
0 голосов
/ 26 декабря 2018

Вы должны указать формат вашей оси X следующим образом

chart.seriesTemperatur.XValueType = ChartValueType.DateTime;
chart.ChartAreas[0].AxisX.LabelStyle.Format = "yyyy-MM-dd HH:mm";
...