在绑定后添加,从ListBox中删除项目

时间:2014-07-04 14:01:10

标签: c# .net winforms data-binding listbox

在以下按钮事件中,我将项目添加到另一个列表中的列表中。

    private void btnAdd_Click(object sender, EventArgs e)
    {
        if (lstPermissions.SelectedItem != null)
        if (!lstGivenPermissions.Items.Contains(lstPermissions.SelectedItem))
        {
            lstGivenPermissions.Items.Add(lstPermissions.SelectedItem);
        }
    }

当项目在lstPermissions中进行了硬编码并且lstGivenPermissions' s datasource未设置时,它很好。但是在将数据绑定到lstGivenPermissions之后,当我尝试执行此方法时,我得到了此异常。

设置DataSource属性时无法修改项目集合。

我使用此属性将数据绑定到lstGivenPermissions

    public List<string>  GivenPermission
    {
        get { return lstGivenPermissions.Items.Cast<string>().ToList(); }
        set { lstGivenPermissions.DataSource = value; }
    }

我可以理解数据绑定导致了这个异常。但我的要求是,我想从数据库加载lstPermissions的所有权限和所选用户对lstGivenPermission的权限。然后,我应该能够在lstGivenPermissions之间添加和删除项目。你能告诉我怎么做吗?

1 个答案:

答案 0 :(得分:2)

您不应该使用属性绑定到列表控件...属性应该只保存/加载值,如下所示:

private List<string> _givenPermission;
public List<string>  GivenPermission
{
    get { return _givenPermission; }
    set { _givenPermission = value;}
}

如果你必须绑定,请尝试这样做:

private List<string> _givenPermission;
public List<string>  GivenPermission
{
    get { return _givenPermission; }
    set { _givenPermission = value; lstGivenPermissions.DataSource = value; }
}