С чем я работаю: C #, Windows Forms, Visual Studio 2017
Я пытаюсь получить диаграмму, которая показала бы некоторую статистику после выбора периода (для этого у меня есть два указателя даты и времени).А на оси X диаграммы показаны не все значения, которые должны, а только несколько значений, как видно на скриншоте ниже.И ось Y даже не показывает никаких значений.
(увы, у меня нет 10 пунктов репутации для публикации изображений, поэтому я предоставляю ссылки на изображения)
Первый снимок экрана : https://i.imgur.com/07ntjI9.png?
В stackoverflow я нашел несколько решений:
chartCheck.ChartAreas[0].AxisX.IntervalType = Your type here;
chartCheck.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Days;
chart.ChartAreas["chart1"].AxisX.Interval = 10;
На основании этого я написал код для интервалов по осям X и Y и поместилих в файл конструктора, но они продолжают исчезать:
chartIncHalfHoursPerPerson.ChartAreas[0].AxisX.Interval = 1;
chartIncHalfHoursPerPerson.ChartAreas[0].AxisY.Interval = 1;
Вот как выглядит часть кода в Designer:
chartArea2.AxisY.Title = "Incompliant Half-Hours";
chartArea2.Name = "ChartArea1";
this.chartIncHalfHoursPerPerson.ChartAreas.Add(chartArea2);
chartIncHalfHoursPerPerson.ChartAreas[0].AxisX.Interval = 1;
chartIncHalfHoursPerPerson.ChartAreas[0].AxisY.Interval = 1;
С этим я могу получить X и Y- ось, чтобы показать все значения, которые я хочу, как можно увидеть на скриншоте ниже (в ссылке).
Второй скриншот : https://i.imgur.com/GRCQqaJ.png?
Проблема в том, что эта часть кода (см. Ниже) исчезает через некоторое время (или, возможно, после 1-2 запусков программы, я не могу понять момент и причину их исчезновения), и все это восходит к тому, какэто было на первом снимке экрана (с гораздо меньшими значениями):
chartIncHalfHoursPerPerson.ChartAreas[0].AxisX.Interval = 1;
chartIncHalfHoursPerPerson.ChartAreas[0].AxisY.Interval = 1;
Я, вероятно, должен добавить сомБолее подробная информация:
0) о программе, которую я делаю
1) о том, что в других формах подобные строки кода не исчезают - они просто твердо остаются там
2) о моих предположениях о том, что может быть причиной загадочного исчезновения кода
Part 0: Это программа, которая показывает некоторую статистику позапрос в 4 формах.Три из этих форм имеют одну диаграмму, в то время как четвертая форма имеет 2 диаграммы.
Часть 1: Как указано выше, есть 3 другие формы, каждая с одной диаграммой.Все они имеют часть кода, аналогичную той, что представлена в форме с двумя диаграммами (см. Код и ссылку со скриншотом ниже).
chartIncHalfHoursPerPerson.ChartAreas[0].AxisX.Interval = 1;
chartIncHalfHoursPerPerson.ChartAreas[0].AxisY.Interval = 1;
Третий снимок экрана : https://i.imgur.com/u16WUMZ.png?
Часть 2: Итак, вот, что я думаю, может быть причиной:
0) Каждая диаграмма связана с соответствующим BindingSource.Если это форма с одним графиком - все работает нормально.Но в нашем случае у нас есть 2 графика, и каждый из них подключен к одному и тому же BindingSource.
1) Простой факт, что в одной форме есть 2 графика?
2) Расположение этогоФорма в основном состоит из нескольких SplitContainer, которые были размещены один над другим.Всего 4 SplitContainers.Я не уверен, если это плохой или нормальный способ установить «основание» в форме.
3) Я пробовал как Dock (с «Fill»), так и Anchor (с «Top, Left, Right»)., Низ").Что ж, Dock работает лучше, но все еще не решает проблему.
4) Возможно, мне не следует добавлять код в Designer, а скорее в файл, в котором записаны логические операции формы.
5) Наконец, мне стало интересно, связана ли проблема с отсутствием горизонтальной полосы прокрутки.В конце концов, на оси X слишком много фамилий.Я попытался просмотреть свойства SplitContaner и Chart, а затем погуглил о том, как добавить полосу прокрутки.Пробовал этот код, но полоса прокрутки даже не появляется:
chartIncHalfHoursPerPerson.ChartAreas[0].AxisX.Interval = 1;
chartIncHalfHoursPerPerson.ChartAreas[0].AxisY.Interval = 1;
chartIncHalfHoursPerPerson.ChartAreas[0].AxisX.ScrollBar.Size = 10;
chartIncHalfHoursPerPerson.ChartAreas[0].AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll;
chartIncHalfHoursPerPerson.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = true;
chartIncHalfHoursPerPerson.ChartAreas[0].AxisX.ScrollBar.Enabled = true;
Что ж, большинство веб-сайтов с гуглом говорят о том, как добавить полосу прокрутки на диаграмму (в самой диаграмме, а не в диаграмме и надписях).