在我的代码中,我创建了一个表并将CSV文件导出到该表中。在我的代码的另一部分中,comboBox填充了我的数据库中的表名。如下所示:
private void FillCombo()
{
try
{
string connectionString = "Data Source=LPMSW09000012JD\\SQLEXPRESS;Initial Catalog=Pharmacies;Integrated Security=True";
using (SqlConnection con2 = new SqlConnection(connectionString))
{
con2.Open();
string query = "SELECT * FROM INFORMATION_SCHEMA.TABLES ";
SqlCommand cmd2 = new SqlCommand(query, con2);
SqlDataReader dr2 = cmd2.ExecuteReader();
while (dr2.Read())
{
int col = dr2.GetOrdinal("TABLE_NAME");
comboBox1.Items.Add(dr2[col].ToString());
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
我们想要实现的是刷新comboBox以反映通过上述函数执行的新添加的表。首先想到的是创建一个按钮并重写上面的函数:
private void button1_Click_1(object sender, EventArgs e)
{
//this is where I would just rewrite the contents of the above function
}
正如您所猜测的那样,它可以正常工作,但价值观是重复的。如何在不复制现有信息的情况下刷新comboBox?
答案 0 :(得分:3)
正如我在评论中提到的,您可以在调用方法之前清除项目,
combobox.Items.Clear();
或者你可以像这样在while循环中添加If语句,
while (dr2.Read())
{
int col = dr2.GetOrdinal("TABLE_NAME");
if (!comboBox1.Items.Contains(dr2[col].ToString()))
{
comboBox1.Items.Add(dr2[col].ToString());
}
}
因此,您无需在每次召回时清除物品。
希望有所帮助,