我已经创建了一个RadioButtonList类的数组,但显然似乎无法访问它或使用从中检索到的答案。我总是得到异常:对象引用未设置为对象的实例
static int jimmy = 0;
protected void Button5_Click(object sender, EventArgs e)
{
int sizeOfPain = GlobalVariables.sympLCWR1Pain.Count;
RadioButtonList[] RBLPain = new RadioButtonList[sizeOfPain];
Label1.Visible = false;
RadioButtonList1.Visible = false;
Label[] Labella = new Label[sizeOfPain];
if (jimmy < sizeOfPain)
{
Labella[jimmy] = new Label();
RBLPain[jimmy] = new RadioButtonList();
Labella[jimmy].Text = GlobalVariables.sympLCWR1Pain[jimmy];
RBLPain[jimmy].Items.Add("Yes");
RBLPain[jimmy].Items.Add("No");
Panel1.Controls.Add(Labella[jimmy]);
Panel1.Controls.Add(RBLPain[jimmy]);
if (RBLPain[jimmy].SelectedIndex == 0)
{
GlobalVariables.sympLCWR1Yes.Add(GlobalVariables.sympLCWR1Pain[jimmy]);
}
}
else
{
Label2.Text = "YOUS DONE!";
Label3.Text = GlobalVariables.sympLCWR1Yes[0];
Button5.Visible = false;
}
jimmy++;
}
我在if条件下得到例外。任何帮助将不胜感激,谢谢:)
答案 0 :(得分:0)
该错误意味着您正在尝试访问尚未实例化的内容。在您更新的代码中,我看到您在点击事件处理程序中有以下内容:
RadioButtonList[] RBLPain = new RadioButtonList[sizeOfPain];
Label[] Labella = new Label[sizeOfPain];
这意味着每次处理click事件时,您都要重新声明RBLPain
和Labella
数组。此外,当执行离开处理程序时,变量超出范围,因此您将无法在其他函数中使用它们,或者使用处理程序中从一次调用到下一次调用的更改。我不知道你的其余代码在做什么,但尽管看似不必要的数组,执行应该在你的click事件中存活下来。
在原始帖子中,您尝试访问SelectedItem.Text
的{{1}}属性。在此修订版中,您正在检查RBLPain[jimmy]
。当SelectedIndex
为-1时,SelectedIndex
将为空,这可能会导致您的原始问题。无论您的表单上发生了哪些更改,因为您在每次点击活动期间都在创建新的SelectedItem
,但您没有使用表单中的值 - RadioButtonList
将始终为-1看到。
答案 1 :(得分:0)
我不明白为什么要检查条件。如果你在buttonclick上创建rbl,那么第一项应该总是被选中。无论如何在if条件之前使用RBLPain[jimmy].SelectedIndex=0;
。