ComboBox在值c#中加倍

Nov*_*eMe 2 c# combobox

我有以下代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

问题是每次我Tab从文本框按下,comboBox元素继续加倍.如果有Ken,John,Tim在那里,如果我再次按Tab键,它会显示两次.

我尝试在上面的名称中使用distinct,但是每次创建新的瞬时时都不会执行任何操作,并保存上一个.添加名称后,我无法将comboBox设置为空,因为它在代码中单击后面的按钮时使用.

我认为唯一的替代方法是声明一个全局变量,并确保其值为0,然后只在comboBox中插入值,并在插入值后将其更改为1.但这似乎不是一个好的编码实践.

有没有更好的方法来完成这项工作?

Mik*_*oud 6

comboBox.Items.Clear()之前添加AddRange.所以整个块应该是.

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.Clear();
    comboBox.Items.AddRange(names); 
} 
Run Code Online (Sandbox Code Playgroud)