首页 > 解决方案 > 如何保持图表中的间隔?在 Designer 中,必要的代码行不断消失

问题描述

我使用的是:C#、Windows 窗体、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 个程序运行后,我无法弄清楚它们消失的时刻和原因),这一切都回到了它在第一个 schreenshot(显示的值要少得多):

chartIncHalfHoursPerPerson.ChartAreas[0].AxisX.Interval = 1;
chartIncHalfHoursPerPerson.ChartAreas[0].AxisY.Interval = 1;

我可能应该添加更多信息:

0)关于我正在做的程序

1)关于在其他形式中类似的代码行不会消失的事实——它们只是牢牢地呆在那里

2)关于我对可能导致代码神秘消失的原因的假设

第 0 部分: 这是一个以 4 种形式按请求显示一些统计信息的程序。其中三个表格有一个图表,而第四个表格有两个图表。

第 1 部分: 如上所述,还有 3 种其他形式,每一种都有一张图表。它们都有一部分代码类似于带有 2 个图表的表单中的代码(请参见下面的代码和带有屏幕截图的链接)。

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)这种形式的布局基本上是几个SplitContainers,它们一个一个地放在另一个之上。总共有 4 个 SplitContainer。我不确定在表单中设置“基础”是否是一种糟糕或正常的方式。

3)我尝试了 Dock(带有“Fill”)和 Anchor(带有“Top、Left、Right、Bottom”)。好吧,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;

好吧,大多数谷歌网站都讲述了如何向图表添加滚动条(在图表本身中,而不是在图表和图例下)

标签: c#winformschartsscrollbar

解决方案


winform 代码的某些部分是自动生成的。文件中有注释,搜索:-

#pragma region Windows 窗体设计器生成的代码

您在这些区域中所做的任何编辑都将消失。


推荐阅读