2015-11-30 3 views
0

У меня есть линейная диаграмма, которая после того, как на ней будут нанесены достаточные данные, данные превысят то, что видно на экране (так что диаграмма показывает только самые последние данные). Когда это произойдет, я хотел бы, чтобы полоса прокрутки заполнялась по оси X, позволяя пользователю использовать полосу прокрутки для просмотра таких предыдущих данных.C# - создать Horiz. полоса прокрутки на диаграмме, когда данные зачеркнуты за пределами экрана

Как мне это сделать? Я не хочу, чтобы пользователь мог перетаскивать или изменять масштаб самой диаграммы, просто чтобы использовать полосу прокрутки для навигации по диаграмме.

Я просмотрел эту статью: https://msdn.microsoft.com/en-us/library/dd456730.aspx, но это не помогает & прокрутки не отображаются.

ответ

0

Не видя соответствующих частей своего кода, трудно решить проблемы.

Вот одно странное заявление:

после достаточно точек данных были нанесены на него, данные будут превышать , что видно на экране монитора (так что диаграмма показывает только самые последние данные).

Теперь это может произойти только после того, как вы установили AxisX.Maximum, потому что по умолчанию элемент управления диаграммой будет все больше сжимать область, пока вы добавляете точки.

Но когда вы установили максимум того, что можно показать, ни одна полоса прокрутки не может работать или даже отображаться. Звучит логично, не так ли?

Так что либо не устанавливайте его в первую очередь, либо не очищайте, когда количество точек превышает то, что вы хотите показать. Для того, чтобы очистить его использовать NaN:

chart1.ChartAreas[0].AxisX.Maximum = Double.NaN; 

Или, конечно, установить его в последний момент вы хотите показать!

Посмотрев на то, что вы не должны делать, давайте посмотрим, что вам нужно сделать, чтобы показать скроллбар:

Первый включить его:

chart1.ChartAreas[0].AxisX.ScrollBar.Enabled = true; 

Далее вы сказать ему, чтобы показать только скроллинг ручки и не кнопки зума сброса:

chart1.ChartAreas[0].AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll; 

См MSDN on ScrollBarButtonStyles для различных вещей, полоса прокрутки может показать/сделать!

И чтобы убедиться, что пользователь не может масштаба установить это:

chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = false; 

И, наконец, установить текущий диапазон, чтобы показать:

chart1.ChartAreas [0] = .AxisX.ScaleView.Size 111; // show 111 DataPoints

Теперь показывается полоса прокрутки.

Это хорошая идея для изучения AxisScaleView class, так как у нее есть несколько полезных свойств ..

В зависимости от типа данных ваших X-значений вы можете также необходимо установить ScaleView.MinSizeType к тому, что подходит для вашей информации:

chart1.ChartAreas[0].AxisX.ScaleView.MinSizeType = DateTimeIntervalType.Number;