2

我知道有几种方法可以创建一个新的DataGridViewRow,请参阅如何以编程方式向 datagridview 添加新行
我目前正在创建一个继承自 DGVR 的类,因此我不能让 DGV 通过仅添加值来创建它,我必须创建它是手动的。
但是,我的代码(用 C++/CLI 编写)失败了ArgumentOutOfRangeException,所以我尝试使用普通的 DGVR,但它也失败了(方法 1)。然后我找到了一个解决方案(方法2),但我不明白它为什么会起作用。
将原始 DGVR 添加到 DGV 后是否以某种方式无效?

{
  ... 

  DataGridViewRow^ dgvrTest = gcnew DataGridViewRow();
  dgvrTest->CreateCells (dataGridView1);
  Object^ oValue = dgvrTest->Cells[0]->Value;  // okay

  int ixRow = dataGridView1->Rows->Add (dgvrTest);
  oValue = dataGridView1->Rows[ixRow]->Cells[0]->Value;  // okay

  // method #1
  oValue = dgvrTest->Cells[0]->Value;  // fails after adding the DGVR to the DGV

  // method #2
  dgvrTest = dataGridView1->Rows[ixRow];  // receives a different object. WHY?
  oValue = dgvrTest->Cells[0]->Value;  // works
}
4

0 回答 0