我正在尝试获取int[] array
,但返回的错误是值不能为空。我仍然是C#的新手。有人可以帮助或提供解决方法的线索吗?我尝试了许多传递值的技术,但仍然没有运气。
这是数组的来源
private void btnTag_Click(object sender, EventArgs e)
{
List<int> employee_id_list = new List<int>();
foreach (Control c in panelEmployee.Controls)
{
if (c is CheckBox)
{
if (((CheckBox)c).Checked)
{
employee_id_list.Add(Convert.ToInt32(c.Tag));
}
}
}
var type = Type.GetType("Payroll." + dynamic_form);
dynamic form = Activator.CreateInstance(type) as Form;
form.GetEmployeeID(employee_id_list.ToArray());
this.Close();
}
我在这里显示它的地方
public int[] emp_id;
public void GetEmployeeID(int[] employee_id)
{
emp_id = employee_id;
//in this code there are no errors and it is showing the array
MessageBox.Show(string.Join(Environment.NewLine, emp_id));
}
private void btnSave_Click(object sender, EventArgs e)
{
// but when i trigger this it returns and error Value cannot be null
MessageBox.Show(string.Join(Environment.NewLine, emp_id));
}
答案 0 :(得分:1)
我认为您的问题是您在fil.png
调用之间丢失了变量emp_id
的值(它将参数中的值分配给GetEmployee
,因此您始终通过传递一个非null值)和后来对emp_id
的调用,该调用试图使用先前(并希望)分配的btnSave_Click
也许您正在使用WebForms,在这种情况下,您应该将emp_id分配为Session状态,否则将不会在下次请求时删除。
emp_id