这样做时:
foreach (DataGridView currentGridView in tabControl.SelectedTab.Controls.OfType<DataGridView>())
{
rows = new DataGridViewRow[currentGridView.RowCount];
currentGridView.Rows.CopyTo(rows, 0);
page = 0;
printDocDetail.DocumentName = "Contact List Detailed";
printDocDetail.Print();
}
我经常得到这个结果:
这取决于跑步。对于相同的DataGridView数据,一次运行将正确返回数据,下一次将返回除第一次之外的所有index = -1。
造成这种情况的原因是什么?
P.S。使用DataGridViewRowCollection或简单的数组会产生相同的结果。
答案 0 :(得分:1)
答案是通过将数据复制到新数组而不是将指针复制到数据来使用未绑定数据:
rows = currentGridView.Rows.Cast<DataGridViewRow>().ToArray();
而不是
rows = new DataGridViewRow[currentGridView.RowCount];
currentGridView.Rows.CopyTo(rows, 0);
答案 1 :(得分:-1)