Отключить метки точек в MS Chart для .NET

VB2010 с использованием диаграммы MS: я добавил одну серию в виде точечной диаграммы. Иногда имеется более 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()

person sinDizzy    schedule 27.07.2017    source источник


Ответы (1)


Я думаю, вам нужно зацикливаться, но вы хотите приостановить обновление пользовательского интерфейса, пока вы не сделаете это для всех точек. Попробуйте что-нибудь вроде:

chart1.Series.SuspendUpdates();

foreach (Series s in chart1.Series)
{
    s.IsValueShownAsLabel = false;
}

chart1.Series.ResumeUpdates();
person Baddack    schedule 27.07.2017
comment
Что ж, этого я боялся, но позвольте мне попробовать. - person sinDizzy; 28.07.2017