访问动态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数组对象

该错误的意思是您试图访问尚未实例化的东西。在您更新的代码中,我看到您的点击事件处理程序中有以下内容:

 RadioButtonList[] RBLPain = new RadioButtonList[sizeOfPain];
 Label[] Labella = new Label[sizeOfPain];

这意味着每次处理单击事件时,都要重新定义RBLPainLabella数组。此外,当执行离开处理程序时,变量会超出范围,因此您将无法在其他函数中使用它们,也无法使用处理程序中从一个调用到下一个调用所做的更改。我不知道您的其余代码在做什么,但尽管有看似不必要的数组,执行应该在您的点击事件中幸存下来。

在你最初的帖子中,你试图访问RBLPain[jimmy]SelectedItem.Text属性。在本修订版中,您将检查SelectedIndex。当SelectedIndex为-1时,SelectedItem将为null,这可能导致了您最初的问题。不管你的表单上发生了什么变化,因为你在每次点击事件中都会创建一个新的RadioButtonList,所以你没有使用表单中的值——从我所看到的来看,SelectedIndex总是-1。

我不明白你为什么要检查这个条件。如果你在按钮上创建rbl,第一个项目应该总是被选中。无论如何,在if条件之前使用RBLPain[jimmy].SelectedIndex=0;