Microsoft图表控件和X轴时间刻度格式

我的winforms应用程序中有一个Microsoft Chart Controls。

我目前在循环中播放X和y值。 我也将X轴格式设置为

ChartAreas[0].AxisX.LabelStyle.Format={"00:00:00"} 

这作为时间格式工作正常,但是我注意到一旦我的时间值超过60秒(即00:00:60),而不是比例移动到1分钟(即00:01:00)它变为61 (即00:00:61)一直到99分(00:00:99)然后(00:01:00)

有没有办法解决这个问题?

我怀疑LabelStyle.Format属性的使用方式与string.Format(mySringFormat,objToFormat)类似。
因此,假设你的底层X对象类型是double ,它只会打印一个冒号分隔的 double(例如4321将是00:43:21 )。

AFAIK,没有一种简单的方法可以使用字符串格式打印像时间值这样的double值。

如果您可以更改填充图表的代码,我建议您为X值传递DateTime ,然后您将能够使用自定义DateTime格式,例如

"HH:mm:ss"或其他人

编辑:

根据你的评论:

 // create a base date at the beginning of the method that fills the chart. // Today is just an example, you can use whatever you want // as the date part is hidden using the format = "HH:mm:ss" DateTime baseDate = DateTime.Today; var x = baseDate.AddSeconds((double)value1); var y = (double)value2; series.Points.addXY(x, y); 

编辑2:

这是一个完整的示例,应该很容易将此逻辑应用于您的代码:

 private void PopulateChart() { int elements = 100; // creates 100 random X points Random r = new Random(); List xValues = new List(); double currentX = 0; for (int i = 0; i < elements; i++) { xValues.Add(currentX); currentX = currentX + r.Next(1, 100); } // creates 100 random Y values List yValues = new List(); for (int i = 0; i < elements; i++) { yValues.Add(r.Next(0, 20)); } // remove all previous series chart1.Series.Clear(); var series = chart1.Series.Add("MySeries"); series.ChartType = SeriesChartType.Line; series.XValueType = ChartValueType.Auto; DateTime baseDate = DateTime.Today; for (int i = 0; i < xValues.Count; i++) { var xDate = baseDate.AddSeconds(xValues[i]); var yValue = yValues[i]; series.Points.AddXY(xDate, yValue); } // show an X label every 3 Minute chart1.ChartAreas[0].AxisX.Interval = 3.0; chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Minutes; chart1.ChartAreas[0].AxisX.LabelStyle.Format = "HH:mm:ss"; }