如何在 MS 图表控件中格式化轴
本文关键字:控件 格式化 MS | 更新日期: 2023-09-27 18:35:31
我正在使用 ms 图表控件,并希望执行以下操作:将图表区域[0]的Y轴格式化为特定格式。在这种情况下,它应该是一个没有小数的数字,并用一个点分组(每千)。
尝试过:图表1.图表区域[0]。AxisY.LabelStyle.Format = "{#.###}";
但这并没有给我正确的结果。所以我尝试获取 FormNumber 事件并对此进行测试:
if(e.ElementType == System.Windows.Forms.DataVisualization.Charting.ChartElementType.AxisLabels)// && e.SenderTag!=null)
{
e.LocalizedValue = e.Value.ToString("#.###", _numberFormatInfo);
}
用:
NumberFormatInfo _numberFormatInfo;
_numberFormatInfo = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone();
_numberFormatInfo.NumberGroupSeparator = ".";
_numberFormatInfo.NumberDecimalSeparator = ",";
.ToString("#,0.00", _numberFormatInfo));
没有解决,而通常如果您有这样的东西:
decimal myDec = 123456.789;
string test = myDec.ToString("#,0.00", _numberFormatInfo));
测试将返回 123.456,789(独立于用户计算机上的区域性设置)。
但这似乎不适用于 ms 图表控件。
有人可以向我解释如何能够执行以下操作:
在chartArea[0]中格式化Y值,不带小数,并用点作为组分隔符。同时将 x 值格式化为 dd-MM 格式(如 16-10 => 10 月 16 日),而该值实际上是 Uint 20131016。格式必须与区域性设置无关。希望有人可以帮助我。亲切问候
马蒂斯
我让它像这样工作:
chart1.ChartAreas[0].AxisY.LabelStyle.Format = "MyAxisYCustomFormat";
chart1.ChartAreas[0].AxisX.LabelStyle.Format = "MyAxisXCustomFormat";
使用图表控件的 NumberFormat 事件:
private void chart1_FormatNumber(object sender, System.Windows.Forms.DataVisualization.Charting.FormatNumberEventArgs e)
{
if(e.ElementType == System.Windows.Forms.DataVisualization.Charting.ChartElementType.AxisLabels)
{
switch(e.Format)
{
case "MyAxisXCustomFormat":
e.LocalizedValue = DateTime.ParseExact(e.Value.ToString(), "yyyyMMdd", null).ToString("dd-MM");
break;
case "MyAxisYCustomFormat":
e.LocalizedValue = e.Value.ToString("#,###", _numberFormatInfoNLV);
break;
default:
break;
}
}
}
所有工作都像我想要的那样;-)