如何在C#中使图表图例项交互

时间:2013-08-13 07:22:02

标签: c# winforms charts mschart

我使用win表单(C#.Net Framework 3.5)在运行时创建了一个图表。

enter image description here

我想让这个图表的图例项目互动。

我的要求是,当用户点击图例中的颜色项目时 - 应打开颜色托盘,当用户从托盘中选择颜色时,所选颜色应应用于外部系列数据项。

我如何实现这一目标?简而言之,如何为图例项添加单击事件处理程序?

感谢任何帮助。 NB

2 个答案:

答案 0 :(得分:7)

最后找到答案......在此处发布代码,以便对其他人有所帮助。

private void HeapStatsChart_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            HitTestResult result = HeapStatsChart.HitTest(e.X, e.Y);
            if (result != null && result.Object != null)
            {
                // When user hits the LegendItem
                if (result.Object is LegendItem)
                {
                    // Legend item result
                    LegendItem legendItem = (LegendItem)result.Object;
                    ColorDialog Colour = new ColorDialog();
                    if (Colour.ShowDialog() == DialogResult.OK)
                    {
                        HeapChartColorPref[Convert.ToInt16(legendItem.Name.Substring(4))].color = Colour.Color;
                        GenerateHeapStatsChart(HeapChartColorPref);
                    }
                }
            }
        }

答案 1 :(得分:0)

您可以通过从给定文本的ColorDialog上调用的方法调用Click Event来实现您想要的效果。从中检索用户选择的颜色非常简单。示例代码:

ColorDialog curColorDialog = new ColorDialog();
if (curColorDialog.ShowDialog() == DialogResult.OK)
{
    Color selectedColor = curColorDialog.Color;
}

如果您没有与您希望用户点击的确切位置相关联的特定点击事件,则可以在目标位置的图例之上放置另一个Control。例如:Label(替换文字)或Panel(透明,覆盖每个名称)。