Вы используете один из типов диаграмм Bar
.
Их оси X и Y переключены по сравнению с большинством обычных типов.
Поэтому, чтобы получить значения вдоль оси по горизонтали , вы действительно хотите получить значения y .
Чтобы получить значение y для двойного щелчка мышью, вы можете выполнить HitTest , как показано в этом коде:
private void chart1_MouseDoubleClick(object sender, MouseEventArgs e)
{
var hit = chart1.HitTest(e.X, e.Y, ChartElementType.DataPoint);
if (hit.PointIndex >= 0)
{
DataPoint dp = hit.Series.Points[hit.PointIndex];
Console.WriteLine(dp.YValues[0]);
}
}
Обратите внимание, что в столбце с накоплением значения выглядят сложенными, но каждая точка будет по-прежнему иметь только свое значение.
Если вы хотите получить сложенные / суммированные значения, вам нужно сложить все пункты ниже, включая тот, который был достигнут. «Ниже» здесь означает точки в том же x-слоте, но в нижней серии!
Вы не сможете использовать значения x, если добавите их в виде строк, поскольку в этом случае все они будут 0
, как вы можете видеть на скриншоте.
Но так как все сложенные точки в вашем случае будут иметь одинаковые e.PointIndex
, мы можем использовать это для доступа ко всем точкам в серии ниже ..:
..
int si = 0;
double vsum = 0;
Series s = null;
do
{
s = chart4.Series[si++];
vsum += s.Points[hit.PointIndex].YValues[0];
} while (hit.Series != s);
Console.WriteLine(vsum);
Если вы действительно хотите получить доступ к значениям x, у вас есть два варианта:
Вы можете явно добавить строки в AxisLabel
каждого DataPoint
. В то время как значения x будут все 0
, теперь можно получить доступ к AxisLabels
.
Или вы можете добавить их в виде чисел, возможно, используя некоторую схему для map
строк в числах и обратно и снова установить AxisLabels
.