Получение ошибки «Ссылка на объект не установлена ​​на экземпляр объекта», заполняющая динамически созданный comboBox - PullRequest
0 голосов
/ 22 февраля 2019

Привет! Я пытаюсь заполнить динамически созданный comboBox, используя данные из базы данных, но он показывает исключение (ссылка на объект не установлена ​​на экземпляр объекта).И я устал смотреть.Чего здесь не хватает?Спасибо за помощь!(новичок здесь)

private void SetComboBoxItems()
    {
        foreach (Control control in panelMain.Controls)
        {
            ComboBox comboBox = control as ComboBox;
            try
            {
                using (MySqlConnection connection = new MySqlConnection(Properties.Settings.Default.connectionString))
                {
                    connection.Open();
                    MySqlCommand command = new MySqlCommand("SELECT * FROM home.data", connection);
                    MySqlDataReader dataReader = command.ExecuteReader();
                    while (dataReader.Read())
                    {
                        comboBox.Items.Add((string)dataReader["temp"]);
                    }

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }

1 Ответ

0 голосов
/ 22 февраля 2019

Ваш вопрос немного расплывчат, но я бы сказал, что вы выполняете итерацию по всем элементам управления panelMain.Controls и пытаетесь привести их к ComboBox.Любые, которые не являются ComboBox, я не могу вспомнить ни одного из них, будут нулевыми.Вы не проверяете на ноль, но все еще делаете вызов БД, который затем завершается неудачно, когда вы пытаетесь установить элементы.Я предлагаю следующее:

foreach (Control control in panelMain.Controls)
        {
            ComboBox comboBox = control as ComboBox;
            if(comboBox != null){
                try
                {

или

foreach (Control control in panelMain.Controls.Where(c => c is ComboBox))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...