【发布时间】:2012-02-06 08:58:44
【问题描述】:
我的申请目前有 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;} 方法。但是到目前为止,我根本没有成功使用这些东西。有人遇到过这个问题吗?
编辑: rglu 是这样定义的:
public int[] rglu { get; set; } //I don't get how this works though
【问题讨论】:
-
在你调用
test()之前Sort()被执行了吗? -
是的,它被预先调用了。
-
当您在初始 sn-p 中调用
Close()时,我想您刚刚关闭了 Form2?您是否在某些未提供的代码中启动了 Form1?test()方法是在 Form1 上还是 Form2 上? -
是的,表格 2 在排序运行后关闭,我相信。测试在表格 1 上。
-
请您发布
class Form1中定义rglu的部分吗?