从组合框中删除一个项目

时间:2014-06-17 04:48:50

标签: c# wpf winforms combobox

我想在我的D:驱动器中的文本文件中绑定所有4个字母单词的组合框,所以我写了一个类并声明了一个名称和值:

public class Words
{
    public string Name { get; set; }
    public string Value { get; set; }
}

在我的表单中使用此代码将所有4个字母绑定到我的组合框:

string fileLoc = @"d:\Words.txt";
string AllWords = "";
var word4 = new List<Words>();
if (File.Exists(fileLoc))
{
    using (TextReader tr = new StreamReader(fileLoc))
    {
        AllWords = tr.ReadLine();
    }
}
string[] words = AllWords.Split('-');
foreach (string word in words)
{
     if (word.Length == 4)
     {
        word4.Add(new Words() { Name = word, Value = word });
     }
}
this.comboBox4.DataSource = word4;
this.comboBox4.DisplayMember = "Name";
this.comboBox4.ValueMember = "Value";
this.comboBox4.DropDownStyle = ComboBoxStyle.DropDownList;

现在,我想在选择它时删除单词并单击一个按钮。只需从组合框中删除而不从文本文件中删除。重新加载表单后,必须再次在组合中显示所有单词。 因为我对所有单词都使用了很多组合,并且在不同条件下只向用户显示一个组合,用于访问并删除我写这个方法的项目:

 ComboBox combo = this.Controls.OfType<ComboBox>().First(K => K.Visible);
 combo.Items.Remove(combo.SelectedIndex);

但它不会删除任何item.please帮助我。

1 个答案:

答案 0 :(得分:0)

在设置DataSource时,您可能无法修改项目集合。您需要从数据源中删除所选项目并重新绑定它。

if (comboBox1.SelectedIndex != -1)
{
    var words = comboBox1.DataSource as List<Word>;
    words.Remove(comboBox1.SelectedItem as Word);
    comboBox1.DataSource = null;
    comboBox1.DataSource = words;
    this.comboBox1.DisplayMember = "Name";
    this.comboBox1.ValueMember = "Value";
    this.comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
}