获取以编程方式添加的行到DataGridView以显示

时间:2015-07-27 19:22:44

标签: c# winforms data-binding

我知道这是一个老问题...我有DataGridView直接绑定到自定义对象的通用列表。这是用户点击"添加新行"按钮:

private void btnAddStation_Click(object sender, EventArgs e)
{
    if (dgvStationConfiguration.DataSource != null && ((List<StationConfiguration>)dgvStationConfiguration.DataSource).Count > 0)
    {
        var stations = (List<StationConfiguration>)dgvStationConfiguration.DataSource;
        stations.Add(new StationConfiguration(string.Empty, string.Empty, string.Empty, stations.Last().FolderName));
        IsGridDirty = true;
    }
}

但新行没有出现。在调试器中,我看到它已被添加到数据源中,但我无法强制它显示。

我已经尝试了将数据源设置为null并再次返回列表的旧hack,但它会弄乱我的datagridview列的顺序。

我还尝试过Refresh和EndEdit但没有成功。

1 个答案:

答案 0 :(得分:0)

List<T>集合不支持IBindingList接口,因此为了通知您的DataGridView控件已删除或添加集合中的项目,请尝试使用{{3}而是收集。