我有一个Windows Form
与dgv。目前它仅用于表示目的,因此我使用虚拟数据用数据填充一行。我还有一个名为Add New Row
的按钮,每次点击时都需要在dataGridView
中添加新的空行。对于dgv的初始填充,我使用如下形式的load
事件:
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.AutoGenerateColumns = false;
MyData td13 = new MyData();
td13.colorCombinationColumn = "aff";
td13.remarksColumn = "abcdddd";
td13.prodColumn = true;
td13.LastModifiedColumn = "ab";
td13.ByColumn = "abc";
MyData[] arr = new MyData[2];
arr[0] = td13;
dataGridView1.DataSource = arr;
}
这个类MyData
的位置:
public class MyData
{
private int mId;
private string mCombination;
private string mremarks;
private bool mprod;
private string mLastModified;
private string mBefore;
public int Id
{
get
{
return mId;
}
set
{
...
到目前为止一直很好,但随后我添加了我的按钮并处理了他的click
事件:
private void btnAddRow_Click(object sender, EventArgs e)
{
SoleData[] arr = new SoleData[1];
dataGridView1.DataSource = arr;
}
这就是出错的地方。如果我只是dataGridView1.Rows.Add(1);
说Rows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound.
。如你所见,我尝试了其他一些方法,但到目前为止还没有成功。
答案 0 :(得分:2)
尝试使用BindingList<MyData>
代替MyData[] arr
。
您对列表所做的任何修改都将反映在DGV中,无需进一步的代码。
(另外,将列表声明为表单的私有字段。)