C# 将表单类型传递给方法会返回空引用吗?
我有一个方法是这样的:C# 将表单类型传递给方法会返回空引用吗?,c#,winforms,telerik,object-reference,C#,Winforms,Telerik,Object Reference,我有一个方法是这样的: public void Report(Form form, string[] textboxes, string[] patientdetails) { try { int i = 0; foreach (string textbox in textboxes) { form.Controls.OfType<Text
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)
{
}
}
在没有看到代码的其余部分或不知道异常是由哪一行引发的情况下,我猜想您在将异常传递给方法之前没有初始化
Test
不是那样,就是
form.Controls.OfType<TextBox>().FirstOrDefault(n => n.Name == textbox)
form.Controls.OfType().FirstOrDefault(n=>n.Name==textbox)
未找到匹配项,因此返回
null
。然后在null
上调用Text
,这将引发异常。我知道了,实际上所有的文本框都在splitContainer的第一个splitterPanel中,我用它们的“控件”属性遍历它们,并更改了文本框的文本属性……感谢大家的支持。稍微调试一下代码,告诉我们问题的实际位置。我猜FirstOrDefault(n=>n.Name==textbox)
为其中一个textbox名称返回null。这意味着它在作为参数传递的表单上找不到textboxs,是的,这是引发异常的代码行。对。。。那么为什么字符串和表单上的内容不匹配呢?表单上有五个名为string[]的textbox控件文本框但当我试图直接在事件上执行此操作时,它工作良好,我不知道如何解决此问题?Test是一个winform类,在传递给方法时已初始化。当我以同样的方式不使用方法时,它工作得很好。但不知道为什么传递参数返回null。
form.Controls.OfType<TextBox>().FirstOrDefault(n => n.Name == textbox)