2013-03-13 33 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

相关问题