收到错误消息“对象引用未设置为对象的实例”填充comboBox动态创建

时间:2019-02-22 20:15:47

标签: c# database visual-studio combobox

嗨,我正在尝试使用数据库中的数据填充动态创建的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 :(得分:2)

您的问题有点含糊,但我想您可能要遍历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))