mschart – Microsoft图表控件图例项目排序
发布时间:2020-12-13 23:45:19 所属栏目:Windows 来源:网络整理
导读:我有一个8系列的图表 – 称他们为S1至S8.它们在图表的系列列表中按顺序排列,并使用自定义图例项(Legend.CustomItems)显示.一切都运行正常,除了在图例环绕到新线条时图例中如何显示项目的错误. 我希望项目以行显示: S1 S2 S3 S4S5 S6 S7 S8 不幸的是,似乎当
我有一个8系列的图表 – 称他们为S1至S8.它们在图表的系列列表中按顺序排列,并使用自定义图例项(Legend.CustomItems)显示.一切都运行正常,除了在图例环绕到新线条时图例中如何显示项目的错误.
我希望项目以行显示: S1 S2 S3 S4 S5 S6 S7 S8 不幸的是,似乎当图例检测到它需要两行时,它会在水平之前垂直填充,如下所示: S1 S3 S5 S7 S2 S4 S6 S8 有没有办法正确安排物品?这是控件的错误吗? var chart = new Chart(); // More chart setup foreach(var s in chart.Series) { if (simpleLegend) chart.Legends[0].CustomItems.Add(s.Color,s.LegendText); else { var legendItem = new LegendItem(); // Legend item customization chart.Legends[0].CustomItems.Add(legendItem); } } 编辑 为了说清楚,问题在于图例项目的布局,而不是订单.根据图例项目的长度,我可能会得到以下布局: S1 S3 S5 S7 S8 S2 S4 S6
您可以在CustomizeLegend事件中安排它们.
将OnCustomizeLegend =“Chart1_CustomizeLegend”添加到图表标记或将其绑定在代码后面.然后创建处理程序 protected void Chart1_CustomizeLegend(object sender,CustomizeLegendEventArgs e) { //change order of legend items var items = e.LegendItems; var item = items[1]; //s2 items.RemoveAt(1); items.Insert(2,item); item = items[1]; //after removing s2,s3 is now here items.RemoveAt(1); items.Insert(4,item); //etc... } 或者您可以先创建一些集合,然后通过按所需顺序引用现有图例项目来填充它,然后清除LegendItems并一次插入所有项目.我认为你可以用一种对所有物品编号都有效的方式来写它,但我留给你;). 更多信息:http://msdn.microsoft.com/en-us/library/dd488245.aspx (我知道这个问题已经快2年了,但也许有同样问题的人(比如我今天)会觉得这很有帮助.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读