首页 > 解决方案 > 获取错误“对象引用未设置为对象的实例”填充动态创建的组合框

问题描述

您好我正在尝试使用数据库中的数据填充动态创建的组合框,但它显示异常(对象引用未设置为对象的实例)。我厌倦了寻找。这里缺少什么?感谢所有的帮助!(这里是新手)

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);
            }
        }
    }

标签: c#databasevisual-studiocombobox

解决方案


您的问题有点含糊,但作为一种猜测,我会说您正在迭代 panelMain.Controls 中的所有控件并尝试将它们强制转换为 ComboBox。任何不是 ComboBox 的,我不记得任何在我脑海中的东西,都将是空的。您不检查 null 但仍然进行数据库调用,然后在您尝试设置项目时失败。我建议如下:

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))

推荐阅读