MSChart Customlabel 参考不持久
MSChart Customlabel reference not persisting
请耐心等待我的解释,因为代码在我无法复制的计算机上。
我在 C# 中使用 MSChart 和 CustomLabels。我有另一个对象的树类型列表,每个对象都有一个自定义标签作为 class 的一部分。
示例:
public class item
{
public CustomLabel label = new CustomLabel();
public List<item> children = new List<item>();
}
我在这些 classes 中设置标签,然后将它们推入 YAxis (chartArea)
示例:
item.label.text = "some text";
chartArea.YAxis.CustomLabels.Add(item.label);
在代码的后面,我需要更改标签的文本以便访问我的 class 标签(已验证 class 相同)
item.label.text = "new text";
但是当我检查 CustomLabels 列表时,文本值仍然是旧值
(chartArea.YAxis.CustomLabels[0].文本 == "some text")
我不明白为什么会这样。我认为实例化对象是引用。因此文本应该是"new text";
我有可折叠的标签,这就是我需要这样做的原因。请帮助我理解。
是的,它们是对象,但在添加它们时,您并不是简单地将它们添加为参考,而是它们似乎被复制到图表中。
(很难说,因为似乎没有 MSChart 的来源。)
因此:您需要或者重新分配CustomLabels
或者改变它们的属性。
不需要重新添加,重新赋值即可。为此,您需要跟踪您拥有的标签。只有一个,这很简单:
chart.ChartAreas[0].AxisX.CustomLabels[0] = yourItem.Label;
要更改 Text
到位:
chart.ChartAreas[0].AxisX.CustomLabels[0].Text = yourItem.Label.Text;
此行为不同于 DataPoints
。在那里你可以保留一个参考,改变值,它会显示..
更新:
出于好奇,我对我能想到的所有其他 ChartElement 类型进行了相同的测试,即 Annotations, ChartAreas, Legends, Series, Titles, LegendCellColumns and DataPoints
。事实证明,它们都被正确引用了,只有当您 Add
时,对 CustomLabels
的引用才被破坏。
调查 CustomLabelsCollection Class 我看不出这种行为的原因..
以下是小测试的前后对比:
请耐心等待我的解释,因为代码在我无法复制的计算机上。
我在 C# 中使用 MSChart 和 CustomLabels。我有另一个对象的树类型列表,每个对象都有一个自定义标签作为 class 的一部分。 示例:
public class item
{
public CustomLabel label = new CustomLabel();
public List<item> children = new List<item>();
}
我在这些 classes 中设置标签,然后将它们推入 YAxis (chartArea) 示例:
item.label.text = "some text";
chartArea.YAxis.CustomLabels.Add(item.label);
在代码的后面,我需要更改标签的文本以便访问我的 class 标签(已验证 class 相同)
item.label.text = "new text";
但是当我检查 CustomLabels 列表时,文本值仍然是旧值
(chartArea.YAxis.CustomLabels[0].文本 == "some text")
我不明白为什么会这样。我认为实例化对象是引用。因此文本应该是"new text";
我有可折叠的标签,这就是我需要这样做的原因。请帮助我理解。
是的,它们是对象,但在添加它们时,您并不是简单地将它们添加为参考,而是它们似乎被复制到图表中。
(很难说,因为似乎没有 MSChart 的来源。)
因此:您需要或者重新分配CustomLabels
或者改变它们的属性。
不需要重新添加,重新赋值即可。为此,您需要跟踪您拥有的标签。只有一个,这很简单:
chart.ChartAreas[0].AxisX.CustomLabels[0] = yourItem.Label;
要更改 Text
到位:
chart.ChartAreas[0].AxisX.CustomLabels[0].Text = yourItem.Label.Text;
此行为不同于 DataPoints
。在那里你可以保留一个参考,改变值,它会显示..
更新:
出于好奇,我对我能想到的所有其他 ChartElement 类型进行了相同的测试,即 Annotations, ChartAreas, Legends, Series, Titles, LegendCellColumns and DataPoints
。事实证明,它们都被正确引用了,只有当您 Add
时,对 CustomLabels
的引用才被破坏。
调查 CustomLabelsCollection Class 我看不出这种行为的原因..
以下是小测试的前后对比: