3

我正在使用System.Windows.Forms.DataVisualization.Charting.Chart该类来绘制包含一些数据的图表。

现在我想抑制图例中条目的自动生成,并用自定义项目替换它们。我已经找到了添加自定义项目的方法,但无法抑制自动生成。

我的代码:

var legend = new Legend();
legend.LegendStyle = LegendStyle.Table;
legend.TableStyle = LegendTableStyle.Wide;
legend.IsEquallySpacedItems = true;
legend.IsTextAutoFit = true;
legend.BackColor = Color.White;
legend.Font = new Font(Config.FontFamily, 9);
legend.Docking = Docking.Bottom;
legend.Alignment = StringAlignment.Center;

legend.CustomItems.Add(new LegendItem("test", Color.Green, string.Empty));

ch.Legends.Add(legend);

有没有人做过这样的事情?

4

3 回答 3

3

尝试在此事件中执行此操作:

private void chart1_CustomizeLegend(object sender, CustomizeLegendEventArgs e)
{
    e.LegendItems.Clear();
    // new stuff
}
于 2012-09-26T13:59:55.627 回答
2

转到Series图表属性中的集合,找到该IsVisibleInLegend属性并将其设置为false

于 2014-06-11T09:18:41.443 回答
1

我知道这很旧,但想在这里发布,以防有​​人想要稍微不同的方式来解决它,这是基于 Steve Wellens 的回答,但不是在事件中添加项目,而是删除非自定义项目。

    protected void chartarea1_CustomizeLegend(object sender, System.Web.UI.DataVisualization.Charting.CustomizeLegendEventArgs e)
    {
        int customItems = ((Chart)sender).Legends[0].CustomItems.Count();
        if (customItems>0)
        {
            int numberOfAutoItems = e.LegendItems.Count()-customItems;
            for (int i = 0; i < numberOfAutoItems; i++)
            {
                e.LegendItems.RemoveAt(0);
            }
        }

    }
于 2014-10-02T22:30:07.593 回答