【发布时间】:2017-07-18 13:16:26
【问题描述】:
我的 WinForms 组合框有问题。 我用 BackgroundWorker 填充 Box。 当我调用 comboBox.Items.Clear() 时,组合框的下拉列表仍然有一个大小,就像组合框中的项目一样。但是没有文本。当我再次运行 backgroundworker 来填充组合框时,每个项目都有 2 个条目。当我清除列表并再次运行时,有 3 个等等。 似乎他们根本没有被清除。
private void buttonConnect_Click(object sender, EventArgs e)
{
if (!backgroundWorker.IsBusy)
{
var sqlConnectionStringBuilder = new SqlConnectionStringBuilder();
sqlConnectionStringBuilder.DataSource = textBoxDataSource.Text;
sqlConnectionStringBuilder.UserID = textBoxUserId.Text;
sqlConnectionStringBuilder.Password = textBoxPassword.Text;
sqlConnectionStringBuilder.InitialCatalog = textBoxInitialCatalog.Text;
backgroundWorker.WorkerReportsProgress = true;
backgroundWorker.DoWork += Read;
backgroundWorker.ProgressChanged += Populate;
backgroundWorker.RunWorkerCompleted += Finish;
backgroundWorker.RunWorkerAsync(sqlConnectionStringBuilder);
}
}
private void Read(object sender, DoWorkEventArgs e)
{
var sqlConnectionStringBuilder = e.Argument as SqlConnectionStringBuilder;
using (var context = new HadesContext(sqlConnectionStringBuilder.ConnectionString))
{
var items = context.Items.ToList();
for (int i = 0; i < items.Count; i++)
backgroundWorker.ReportProgress(0, items[i].Name}
}
}
private void Populate(object sender, ProgressChangedEventArgs e)
{
progressBarProgress.Value = e.ProgressPercentage;
comboBoxItems.Items.Add(e.UserState.ToString());
}
【问题讨论】:
标签: c# winforms combobox backgroundworker