Это на самом деле довольно интересное наблюдение ..
Давайте посмотрим на вторую версию, которая прекрасно работает для вас:
chart1.Series[1].Points.AddXY(max.XValue, max.YValue[0])
или коротко:
series1.Points.AddXY(x,y);
Это нормальный способ добавления DataPoints
: новая точка создается с двумя (или более) значениями и всеми другими свойствами, взятыми из значений по умолчанию Series
.
«Прочие» свойства включают цвета, маркеры и данные метки , включая IsValueShownAsLabel
.
Здесь нет сюрпризов.
Теперь для оригинальной версии:
chart1.Series[1].Points.Add(max);
или короче
series1.Points.Add(dp);
, где max
(или dp
) - DataPoints
в серии first (series0
).
Это ведет себя на удивление по-другому ..:
Можно представить, что DataPoint
перемещается перемещается (как было бы Controls
), но это не так. Или клонируется как строки.
Вместо только новая ссылка создается и добавляется к series1.Points
. Это имеет несколько удивительных последствий ..:
Обе ссылки указывают на один и тот же объект данных ; так внезапно возникает точка в series1 со свойствами, взятыми из series0, включая IsValueShownAsLabel
!
Так как обе серии теперь содержат точку данных с одинаковыми значениями / координатами, диаграмма достаточно умна, чтобы немного разметить их метки, чтобы избежать наложения. Это эффект, который вы видите.
Если вы теперь удалите точку данных из своей исходной серии 0, серия 1 все равно будет содержать ссылку на нее с цветом, меткой и т. Д., Как это было в серии 0 ..
Так что, действительно, нет способа заставить исходную версию работать, так как две ссылки на одну и ту же точку всегда заставят диаграмму отображать метку либо дважды, либо вообще не будут.