Передача Form Type в метод возвращает нулевую ссылку?

У меня есть метод, который выглядит примерно так:

    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 ответа

Решение

Я понял, на самом деле все текстовые поля были в первой панели splitterPanel splitContainer, я перебрал их с помощью их свойства 'Controls' и изменил свойство Text TextBoxes... Ребята, спасибо за вашу поддержку.

Не видя остальной части вашего кода или точно зная, по какой строке было сгенерировано исключение, я предполагаю, что вы не инициализировали Test прежде чем передать его в метод.

Либо это, либо

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

Не находит совпадения и поэтому возвращается null, Вы тогда звоните Text на null что бы бросить исключение.

Другие вопросы по тегам