2012-03-14 21 views
1

我創建了一個RadioButtonList類的數組,但顯然似乎無法訪問它或使用從它檢索的答案。我總是得到異常:對象引用未設置爲對象的實例訪問一個動態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

那是什麼錯誤的意思是,你正在嘗試訪問尚未實例化的東西。在更新的代碼中,我看到你有你的點擊事件處理程序中的以下:

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

這意味着,每一個點擊事件被處理時,你重新聲明的RBLPainLabella陣列。此外,當執行離開處理程序時,變量超出範圍,因此您將無法在其他函數中使用它們,或者將處理程序內的更改從一次調用變爲下次調用。我不知道代碼的其他部分在做什麼,但儘管看起來不需要數組,但執行應該在點擊事件之後仍然存在。

在您原來的帖子中,您嘗試訪問RBLPain[jimmy]SelectedItem.Text屬性。在此修訂中,您正在檢查SelectedIndex。當SelectedIndex爲-1時,SelectedItem將爲空,也許這會導致您的原始問題。無論您的表單上發生了什麼變化,因爲您在每次點擊事件過程中都會創建一個新的RadioButtonList,因此您沒有使用表單中的值 - SelectedIndex將始終爲-1。

+0

iam對不起,'吉米'..只是編輯它。我每次運行代碼時選擇「是」,每當我按下包含列表的按鈕時,就會發生nullReferenceException ..我也嘗試將代碼放在if(RBLPain [0] .SelectedItem!= null)中。靜止不工作..不明白爲什麼 – 2012-03-14 00:47:27

+0

它與postBack屬性有什麼關係? – 2012-03-14 01:04:22

+0

你可以發佈一個擴展的代碼示例以及初始化步驟和事件處理代碼的位置嗎? – 2012-03-14 01:19:37

0

我不明白你爲什麼檢查條件。如果你在buttonclick上創建rbl,應該總是選擇第一項。無論如何使用RBLPain[jimmy].SelectedIndex=0;如果條件。