C# 将字符串列表添加到组合框,当项目被删除时自动影响到列表
C# add list of strings to combobox and when item is remove automatic affect to list
我想将列表中的所有字符串添加到组合框,并且当从 ui 中删除其中一项时,希望自动影响列表(该列表也删除那些选定的字符串)。
解决此类问题的最佳技术是什么。
示例:
List<string> users = new List<string>(){ "frsUser", "secUser", "thrUser", "fouUser" };
private void frmMain_Load(object sender, EventArgs e)
{
foreach(var user in users)
cmbUser.Items.Add(user);
}
private void btnRemove_Click(object sender, EventArgs e)
{
cmbUser.Items.RemoveAt(cmbUser.SelectedIndex);
// Should it be removed also here?
users.RemoveAt(cmbUser.SelectedIndex);
}
使用 BindingSource
可以轻松完成此操作,该 BindingSource
处理组合框项目集合与列表之间的交互
private void frmMain_Load(object sender, EventArgs e)
{
BindingSource bs = new BindingSource();
bs.DataSource = users;
c.DataSource = bs;
}
现在在按钮点击事件中使用此代码
private void btnRemove_Click(object sender, EventArgs e)
{
if(c.SelectedIndex == -1)
return;
BindingSource bs = c.DataSource as BindingSource;
bs.RemoveAt(c.SelectedIndex);
// Just to show the updated list
foreach(string u in users)
Console.WriteLine(u);
}
我想将列表中的所有字符串添加到组合框,并且当从 ui 中删除其中一项时,希望自动影响列表(该列表也删除那些选定的字符串)。
解决此类问题的最佳技术是什么。
示例:
List<string> users = new List<string>(){ "frsUser", "secUser", "thrUser", "fouUser" };
private void frmMain_Load(object sender, EventArgs e)
{
foreach(var user in users)
cmbUser.Items.Add(user);
}
private void btnRemove_Click(object sender, EventArgs e)
{
cmbUser.Items.RemoveAt(cmbUser.SelectedIndex);
// Should it be removed also here?
users.RemoveAt(cmbUser.SelectedIndex);
}
使用 BindingSource
可以轻松完成此操作,该 BindingSource
处理组合框项目集合与列表之间的交互
private void frmMain_Load(object sender, EventArgs e)
{
BindingSource bs = new BindingSource();
bs.DataSource = users;
c.DataSource = bs;
}
现在在按钮点击事件中使用此代码
private void btnRemove_Click(object sender, EventArgs e)
{
if(c.SelectedIndex == -1)
return;
BindingSource bs = c.DataSource as BindingSource;
bs.RemoveAt(c.SelectedIndex);
// Just to show the updated list
foreach(string u in users)
Console.WriteLine(u);
}