Мое приложение в настоящее время имеет 2 формы. Она создает форму к югу, Form2, которая заканчивается следующим кодом:Как установить значение, если метод вызывается из дочерней формы?
public partial class Form2 : Form
{ ...
Form1 frm = new Form1();
frm.rglu = glu;
frm.rdate = fulldate;
frm.sort();
Close();
}
Обратите внимание, что форма Form1 всего пару кнопок на данный момент. Один начинается Form2 следующим образом:
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;}
. Однако до сих пор я был неудачным в использовании этих вещей вообще. Кто-нибудь столкнулся с этой проблемой?
Edit: rglu определяется следующим образом:
public int[] rglu { get; set; } //I don't get how this works though
Является 'Sort()' выполняется перед вызовом 'тест()'? – CJBrew
Да, это называется заранее. –
Когда вы вызываете 'Close()' в своем исходном фрагменте, я полагаю, вы только что закрыли Form2? Вы запустили Form1 в некотором коде, который вы не предоставили? Является ли метод 'test()' для Form1 или Form2? – CJBrew