我在表单初始化中遇到对象ChartSettings的问题。
这是在Form1
代码下面添加的我自己的类:
public partial class Form1 : Form
{
public Form1(bool archivePlotPreview)
{
InitializeComponent();
ChartSettings chartOne = new ChartSettings(this.chart1, archivePlotPreview);
}
public ChartSettings chartOne;
//Form1 variables and functions
}
public class ChartSettings
{
public ChartSettings(Chart settingsRelatedChart, bool archivePlotPreview)
{
// przypisanie wykresu do ktorego odnosza sie ustawienia
ChartObject = settingsRelatedChart;
ChartObject.MouseMove += new System.Windows.Forms.MouseEventHandler(this.chart1_MouseMove);
barchivePlotPreview = archivePlotPreview;
}
// other variables and functions
}
创建此类的原因是需要与Chart对象相关的其他变量(在Designer窗口中添加了chart1),例如CSV保存选项,最小/最大标记选项等。因此,在Form1的构造函数中,我添加了以下行来创建ChartSettings对象:可以在上面看到。它将chart1分配给它,在进一步的代码中,我想使用chartOne.ChartObject代替this.chart1。
当我创建新的Form1实例时,会出现一个窗口,可见chart1等,但是当我在使用chartOne.ChartObject引用的位置按下“加载数据”按钮时,它崩溃了,因为chartOne为null:/在this.chart1上的直接操作似乎是好。
当我调试代码时,chartOne IS是在构造函数中创建的,并且不是null,但是当我按下提到的按钮时,它的行为仍然与上面相同。
为什么我的chartOne消失在两者之间?以及如何正确地做呢?
最佳答案
您没有初始化属性ChartSettings chartOne
,而是在构造函数内部创建实例,并且在构造函数完成时将其处置。这意味着您从未初始化过类级别的属性chartOne;因此它将始终为null。
当使用this.chartOne时,您声明要使用在类中定义的属性。
更改为;
public ChartSettings chartOne{ get; set;}
public Form1(bool archivePlotPreview)
{
InitializeComponent();
chartOne = new ChartSettings(this.chart1, archivePlotPreview);
}