刷新ComboBox

时间:2015-08-10 09:22:32

标签: c# visual-studio combobox

我单击删除按钮后尝试刷新ComboBox,但是当我尝试这个时它会给我错误:

  

设置DataSource属性时无法修改项集合。

这是Delete按钮的代码:

private void deleteBttn_Click(object sender, EventArgs e)
{
   con.Open();
   string Query = "DROP TABLE [" + comboBox1.SelectedValue.ToString() + "]";
   SqlCommand cmd = new SqlCommand(Query, con);

   SqlDataReader myReader;

   try
   {          
      myReader = cmd.ExecuteReader();
      MessageBox.Show("Deleted");

      this.comboBox1.Items.Remove(this.comboBox1.SelectedItem);
   }
   catch (Exception ex)
   {
      MessageBox.Show(ex.Message);
   }

   con.Close();    
}

这是ComboBox

中的代码
try
{
   con.Open();

   SqlCommand sqlCmd = new SqlCommand();

   sqlCmd.Connection = con;
   sqlCmd.CommandType = CommandType.Text;
   sqlCmd.CommandText = "Select TABLE_NAME from INFORMATION_SCHEMA.tables";

   SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd);        

   DataTable dtRecord = new DataTable();
   sqlDataAdap.Fill(dtRecord);
   comboBox1.DataSource = dtRecord;
   comboBox1.DisplayMember = "table_name";
   comboBox1.ValueMember = "table_name";

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

3 个答案:

答案 0 :(得分:2)

  

设置DataSource属性时无法修改项集合。

错误消息告诉您,您已在“comboBox1”上设置了DataSource属性。因此,您应该删除public abstract <C> CustomMap<K, C> map(Function<? super V, ? extends C> f)

DataSource

或者如果你想保留comboBox1.DataSource = null; ,不要试图自己删除项目(你应该在dataSource表中,而不是在comboBox项目中)

答案 1 :(得分:2)

设置DataSource-Property会自动将ComboBox与数据库表配对,并阻止您手动修改GUI元素。

强制刷新ComboBox(虽然你可能不需要,看看Form应该如何处理它),试试这个:

DataSource

答案 2 :(得分:1)

据我所知,您的ComboBox上有一个表格列表,您想要删除所选项目:

第一件事:如果您使用DDL查询(如DROP,CREATE,ALTER ..)和一些DML查询(如DELETE,Update,INSERT ..),您应该使用方法ExecuteNonQuery而不是{ {1}}方法就像你做的那样 第二步:确保ComboBox控件上的属性ExecuteReader设置为true