【发布时间】:2016-01-30 13:18:27
【问题描述】:
我创建了一个包含字符串 (comboBox.Items.Add(string)) 的组合框,每隔几秒钟我想刷新一次它(它是一个客户端列表,因此有些人可能会连接/断开连接)。我遇到的问题是,当我刷新列表时,它也会将所选项目更改为 null ,因此如果我尝试与最后一个选定的客户端通信会导致问题(这意味着我必须在之后重新选择他每个滴答声) 我的刷新代码是:
prog.comboBox1.Items.Clear();
foreach (string client in data.Split('#'))
{
prog.comboBox1.Items.Add(client);
}
刷新后我尝试重新选择项目的代码(它不起作用)是:
string previous = prog.comboBox1.GetItemText(prog.comboBox1.SelectedItem);
//Refresh list here (With the code above)
if (prog.comboBox1.Items.Contains(previous))
prog.comboBox1.Text = previous;
有什么办法可以做我想做的事吗?
【问题讨论】:
-
你怎么刷新?这是网络应用程序吗?
-
尝试吹散 SelectedItem 并将其放回原处。如果您设置
Text您会覆盖(随机)当前项目的文本... -
但如果是这样,我将不得不将上一项保存为对象,并且无法使用 Contains 属性。
-
客户有ID吗?使用唯一 ID 作为参考会容易得多。
-
使用
BindingList<T>并将其设置为ComboBox.DataSource而不是使用此BindingList而不是直接清除组合框项目列表。
标签: c# list combobox refresh items