我有一个类似这样的方法:
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);
答案 0 :(得分:0)
如果没有看到你的其余代码或者确切地知道抛出异常的行,我猜你在将它传递给方法之前没有初始化Test
。
要么是,要么
form.Controls.OfType<TextBox>().FirstOrDefault(n => n.Name == textbox)
找不到匹配项,因此返回null
。然后在Text
上调用null
,这会抛出异常。
答案 1 :(得分:0)
我明白了,实际上所有的文本框都在splitContainer的第一个splitterPanel中,我用它们的'Controls'属性遍历它们并更改了TextBoxes的Text属性...伙计感谢您的支持。