2013-03-13 80 views
0

我有是這樣一種方法:通過傳遞參數未設置爲一個實例對象,這些返回的對象refrence將表單類型傳遞給方法返回空引用?

public void Report(Form form, string[] textboxes, string[] patientdetails) 
    { 
     try 
     { 
      int i = 0; 
      foreach (string textbox in textboxes) 
      { 
       form.Controls.OfType<TextBox>().FirstOrDefault(n => n.Name == textbox).Text = patientdetails[i]; 
       i++; 
      } 

      form.ShowDialog(); 
     } 
     catch (Exception ex) 
     { 
     } 
    } 

string[] textboxes = new string[] { "txtPatientName", "txtAge", "txtGender","txtTestType","txtDate" }; 
string[] patientDetails = new string[]{"Ammar Bashir", "19", "Male", "White Blood Cell Test", "12 March , 2013"}; 

//Test a winform which contain textboxes. 
    Report(Test, textboxes, patientDetails); 
+2

調試一下代碼並告訴我們問題的實際位置。我猜測'FirstOrDefault(n => n.Name == textbox)'爲這些文本框名稱之一返回null。 – Tim 2013-03-13 03:10:36

+0

這意味着它沒有找到一個作爲參數傳遞的窗體上的文本框,是的,這是拋出異常的代碼行。 – 2013-03-13 03:27:45

+0

正確......那麼爲什麼字符串與表單上的內容不匹配? – Tim 2013-03-13 03:31:25

回答

0

我明白了,實際上所有的文本框都在splitContainer的第一個splitterPanel中,我用它們的「控件」屬性遍歷它們並更改了TextBoxes的Text屬性......夥伴們感謝您的支持。

0

沒有看到你的代碼的其餘部分或知道究竟是哪一行引發異常,我猜你在將它傳遞給方法之前沒有初始化Test

要麼,

form.Controls.OfType<TextBox>().FirstOrDefault(n => n.Name == textbox) 

是不是找到一個匹配,因此返回null。然後您撥打Textnull這將拋出異常。

+0

測試是一個WinForm類,當傳遞給方法時已經初始化了。 – 2013-03-13 03:24:03

+0

當Iam做同樣的方式沒有方法它完美..但不知道爲什麼傳遞參數返回null。 – 2013-03-13 04:41:43