【发布时间】:2012-08-31 15:26:33
【问题描述】:
我有以下代码:
private void nameTextBox_Leave(object sender, EventArgs e)
{
var names = ConfigurationManager.AppSettings.AllKeys
.Where(k => k.StartsWith("name"))
.ToArray();
// Add names to combobox
comboBox.Items.AddRange(names);
}
问题是每次我从文本框中按 Tab 时,组合框元素都会加倍。如果里面有 Ken, John, Tim,如果我再次按 Tab,它会显示两次。
我尝试在上面的名称中使用 distinct,但这并没有做任何事情,因为每次都会创建新的实例并保存以前的实例。我不能在添加名称后立即使组合框为空,因为它正在用于在代码中单击稍后的按钮中。
我认为唯一的选择是声明一个全局变量并确保其值为 0 然后只在组合框中插入值,并在插入值后将其更改为 1。但这似乎不是一个好的编码习惯。
有没有更好的方法来完成这项工作?
【问题讨论】:
-
你几乎明白了。清除组合之前,而不是之后。
-
您是否在页面加载时将值加载到组合框中?如果是这样,请参阅下面的答案...