我想在我的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帮助我。
答案 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;
}