gpt4 book ai didi

c# - 在表单构造函数中初始化的对象为null

转载 作者:太空宇宙 更新时间:2023-11-03 17:42:51 25 4
gpt4 key购买 nike

我在表单初始化中遇到对象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);
}

关于c# - 在表单构造函数中初始化的对象为null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14704570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com