访问动态RadioButtonList数组对象
本文关键字:对象 数组 RadioButtonList 动态 访问 | 更新日期: 2023-09-27 18:27:38
我创建了一个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条件下得到了异常。如有任何帮助,我们将不胜感激:)
该错误的意思是您试图访问尚未实例化的东西。在您更新的代码中,我看到您的点击事件处理程序中有以下内容:
RadioButtonList[] RBLPain = new RadioButtonList[sizeOfPain];
Label[] Labella = new Label[sizeOfPain];
这意味着每次处理单击事件时,都要重新定义RBLPain
和Labella
数组。此外,当执行离开处理程序时,变量会超出范围,因此您将无法在其他函数中使用它们,也无法使用处理程序中从一个调用到下一个调用所做的更改。我不知道您的其余代码在做什么,但尽管有看似不必要的数组,执行应该在您的点击事件中幸存下来。
在你最初的帖子中,你试图访问RBLPain[jimmy]
的SelectedItem.Text
属性。在本修订版中,您将检查SelectedIndex
。当SelectedIndex
为-1时,SelectedItem
将为null,这可能导致了您最初的问题。不管你的表单上发生了什么变化,因为你在每次点击事件中都会创建一个新的RadioButtonList
,所以你没有使用表单中的值——从我所看到的来看,SelectedIndex
总是-1。
我不明白你为什么要检查这个条件。如果你在按钮上创建rbl,第一个项目应该总是被选中。无论如何,在if条件之前使用RBLPain[jimmy].SelectedIndex=0;
。