2017-03-02 121 views
2

我想点击我的饼图,我从C#的Windows窗体工具箱中获取药物,并显示该切片的详细信息。现在,这是我点击的代码。我想知道这是否是正确的路线或我应该采取什么路线。饼图切片点击

private void chart1_Click(object sender, EventArgs e) 
{ 
    HitTestResult results = chart1.HitTest((e as MouseEventArgs).X, (e as MouseEventArgs).Y); 
} 

我也using System.Windows.Forms.DataVisualization.Charting;

回答

4

是的,这是正确的appoach。

现在,您可以测试DataPoint是否有效等。

我会用MouseClick顺便说一句,它在默认情况下MouseEventArgs

你甚至可以编写代码MouseMove事件,并使用相同则hitTest控制光标表明用户在数据点..

下面是一个例子:

private void chart1_MouseClick(object sender, MouseEventArgs e) 
{ 
    HitTestResult hit = chart1.HitTest(e.X, e.Y, ChartElementType.DataPoint); 

    if (hit.PointIndex >= 0) 
    { 
     DataPoint dp = chart1.Series[0].Points[hit.PointIndex]; 
     label1.Text = "Value #" + hit.PointIndex + " = " + dp.XValue; 
    } 
} 

private void chart1_MouseMove(object sender, MouseEventArgs e) 
{ 
    HitTestResult hit = chart1.HitTest(e.X, e.Y); 
    var dp = hit.Object as DataPoint; 
    Cursor = (dp is null) ? Cursors.Default : Cursors.Hand; 
} 

注意的两个事件使用不同的方式来测试一击。

enter image description here