Мое приложение в настоящее время имеет 2 формы.Он создает подформу Form2, которая заканчивается следующим кодом:
public partial class Form2 : Form
{ ...
Form1 frm = new Form1();
frm.rglu = glu;
frm.rdate = fulldate;
frm.sort();
Close();
}
Обратите внимание, что form1 - это всего лишь пара кнопок на данный момент.Один запускается с формы 2 следующим образом:
private void button2_Click(object sender, EventArgs e)
{
using (Form2 AcqForm = new Form2())
{
AcqForm.ShowDialog(this);
}
}
Никакой другой код не запускается, кроме кнопки test();
, показанной ниже).Этот frm.sort();
запускает следующий код, найденный в Form1:
public partial class Form1 : Form
{
public void sort()
{
datelist = new List<DateTime>(rdate);
datelist.Sort((a, b) => a.CompareTo(b));
var result = rdate
.Select((d, i) => new { Date = d, Int = rglu[i] })
.OrderBy(o => o.Date)
.ToArray();
this.rdate = result.Select(o => o.Date).ToArray();
this.rglu = result.Select(o => o.Int).ToArray(); //all works fine
for (int i = 7; i+7 <= rglu.Length; i++)
{
Console.WriteLine(Convert.ToString(rdate[i]) + Convert.ToString(rglu[i]));
} //This shows values as expected
}
}
Однако, когда я установил кнопку для запуска еще одного кода, используя rglu
и rdate
, я получаю ошибки нулевого указателя:
public partial class Form1 : Form
{
private void test(object sender, EventArgs e)
{
for (int i = 7; i < rglu.Length; i++){} //rglu is null! The values are lost.
}
}
Я считаю, что решение требует int[] rglu {get; set;}
метод.Однако до сих пор мне не удавалось использовать эти вещи вообще.Кто-нибудь сталкивался с этой проблемой?
Редактировать: rglu определяется следующим образом:
public int[] rglu { get; set; } //I don't get how this works though