您使用其中一种Bar
图表类型。
与大多数普通类型相比,它们的 x 轴和 y 轴切换。
因此,为了获得沿水平轴的值,您实际上想要获取 y-values。
要获得双击数据点的 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 值,你有两个选择: