私のアプリケーションは現在2つのフォームを持っています。これは、次のコードで終了するサブフォームForm2を作成します。
public partial class Form2 : Form
{ ...
Form1 frm = new Form1();
frm.rglu = glu;
frm.rdate = fulldate;
frm.sort();
Close();
}
form1は現時点では2つのボタンにすぎないことに注意してください。 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(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