将DataGridView列绑定到BindingList <T>后,可以将其编辑为可编辑列

hat*_*enn 2 c# binding datagridview bindinglist

我有一个DataGridView,我将它绑定到一个BindingList<KeyValuePair<string, float>>.这是代码的相关部分:

        dgv.AutoGenerateColumns = false;

        DataGridViewTextBoxColumn firstColumn = new DataGridViewTextBoxColumn();
        firstColumn.DataPropertyName = "Key";
        firstColumn.HeaderText = "First Column";

        DataGridViewTextBoxColumn secondColumn = new DataGridViewTextBoxColumn();
        secondColumn.DataPropertyName = "Value";
        secondColumn.HeaderText = "Second Column";
        secondColumn.ReadOnly = false;
        secondColumn.ValueType = typeof(float);

        dgv.Columns.Add(firstColumn);
        dgv.Columns.Add(secondColumn);
        dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
        dgv.MultiSelect = false;
        dgv.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2;
        dgv.ReadOnly = false;

        _bindingList = new BindingList<KeyValuePair<string, float>>(_someList);
        dgv.DataSource = _bindingList;
Run Code Online (Sandbox Code Playgroud)

但第二列仍然不可编辑.我应该怎么做才能使第二列可编辑而第一列不可编辑?

编辑:我希望更改能够反映在BindingList实例本身上.

编辑2:我在代码的末尾添加了这一行,现在我收到一个错误:

        dgv.Columns[1].ReadOnly = false;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

DataGridView column bound to a read-only field must have ReadOnly set to True.

编辑3:问题似乎是我KeyValuePair在我的列表中使用s.

hat*_*enn 7

这个问题原来是该KeyValue的性质KeyValuePair类是只读的.解决方案是创建一个具有public setters来表示数据的新类.