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);
}