如何创建日期(日期时间格式)图表工具提示

问题描述 投票:4回答:3

我不能以正确的格式得到一个提示

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日HH:MM”。

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

我得到:

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

一个AxisLabel是空的

    AxisLabel   ""  string
c# winforms datetime charts data-visualization
3个回答
5
投票

如果您的值添加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]);

2
投票

你应该指定你这样的X轴的格式

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

© www.soinside.com 2019 - 2024. All rights reserved.