在MS Chart for .NET中关闭点标签

时间:2017-07-27 20:09:05

标签: charts labels series mschart points

VB2010使用MS Chart:我添加了一个系列作为点图。有时超过1000点,点标签变得过于混乱。我有明智的标签:

cht.Series("srs").SmartLabelStyle.Enabled = True

但是它仍然看起来很糟糕。所以我添加了一个上下文菜单来关闭标签。然后,用户可以放大到一个位置,如果他们希望重新打开标签。我似乎无法找到一种方法来做到这一点,而无需循环遍历所有数据点。

我可以通过

完全隐藏点和标签
cht.Series("srs").Enabled = False

但我希望隐藏标签,然后在用户选择时重新显示标签。

任何帮助表示感谢。

编辑: 由于我没有找到一种方法来使用一个命令关闭和打开标签,我目前正在循环播放系列中的每个点。

    Me.Cursor = Cursors.WaitCursor
    Application.DoEvents()

    'suspend updating UI
    cht.Series.SuspendUpdates()

    'cycle through all points in the series and set the label either to an empty string or whatever is cached in the Tag property.
    'todo: this is not efficient for large datasets but its the only thing we have.
    For Each pt As DataPoint In cht.Series("srs").Points
        If mnuDisplayLabels.Checked Then
            pt.Label = pt.Tag.ToString
        Else
            pt.Label = ""
        End If
    Next pt

    'resume updating UI
    cht.Series.ResumeUpdates()

    'force redraw of chart
    cht.Update()

1 个答案:

答案 0 :(得分:2)

我认为你必须循环,但是你要暂停更新UI,直到你为所有点完成它。尝试类似:

UICollectionView