Ссылка MSChart Customlabel не сохраняется - PullRequest
0 голосов
/ 27 мая 2018

Пожалуйста, согласитесь с моим объяснением, так как код находится на компьютере, с которого я не могу скопировать.

Я использую MSChart и CustomLabels с C #.У меня есть список типов дерева другого объекта, каждый из которых имеет собственную метку как часть класса.пример:

public class item
{
   public CustomLabel label = new CustomLabel();
   public List<item> children = new List<item>();
}

Я устанавливаю метки в этих классах и затем помещаю их в пример YAxis (chartArea):

item.label.text = "some text";
chartArea.YAxis.CustomLabels.Add(item.label);

Далее в коде мне нужно изменить текстметки, поэтому я получаю доступ к своей метке класса (проверено, что класс такой же)

item.label.text = "new text";

, но когда я проверяю список CustomLabels, текстовое значение остается старым значением

(chartArea.YAxis.CustomLabels [0] .Text == "некоторый текст")

Я не понимаю, почему это происходит.Я думал, что созданные объекты были ссылками.следовательно, должен ли текст быть "новым текстом";

У меня есть разборные ярлыки, поэтому я должен сделать это так.Пожалуйста, помогите мне понять.

1 Ответ

0 голосов
/ 27 мая 2018

Да, они являются объектами, но при их добавлении вы не просто добавляете их в качестве ссылки, а, кажется, они копируются в диаграмму.

(Трудно сказать, поскольку источники для MSChart этого не делаюткажется, что вокруг.)

Итак: Вам нужно или переназначить CustomLabels или , чтобы изменить их свойства на месте.

Нет необходимости добавлять их снова, просто назначьте их снова.Для этого вам нужно отслеживать ярлыки, которые у вас есть.Только с одним это просто:

chart.ChartAreas[0].AxisX.CustomLabels[0] = yourItem.Label;

Чтобы заменить Text на месте:

chart.ChartAreas[0].AxisX.CustomLabels[0].Text = yourItem.Label.Text;

Это поведение отличается, скажем, от DataPoints.Там вы можете сохранить ссылку, изменить значения, и она покажет ..

Обновление:

Из любопытства я сделал такой же тест для всех других типов ChartElement Iможно подумать, а именно Annotations, ChartAreas, Legends, Series, Titles, LegendCellColumns and DataPoints.Как выясняется, все они имеют правильные ссылки, и только ссылки на CustomLabels прерываются, когда вы Add их.

Просмотр CustomLabelsCollection Class Я не вижу причин для такого поведения..

Вот несколько тестов до и после:

enter image description here enter image description here

...