我已经四处阅读并用Google搜索,但没有找到对我有帮助的小事。我想我有一些简单的逻辑错误。 好的,所以这就是我所拥有的: 绑定到数据表的DataGridView,其中填充了文件名(以及其他信息,主要是音频格式)。 好吧,现在我已经编写了一个子程序(VS2013并使用.Net 4.0)进行打印工作正常,我试图添加一个选项,只打印DataGridView中的选定行并且认为好了,然后我给出了打印例程DataGridView的整行或仅基于该选项的选定行。 这是我试过的: 在表单级别我将rowCollection定义为: Dim rowCollection As DataGridViewRowCollection
然后,BeginPrint Sub有以下行来获取行:
'*** Get Rows to print
rowCollection = New DataGridViewRowCollection(FileDataGridView)
If My.Settings.PrintSelected And (FileDataGridView.SelectedRows.Count > 0) Then
Dim row As New DataGridViewRow
For r = FileDataGridView.SelectedRows.Count - 1 To 0 Step -1
row = FileDataGridView.SelectedRows(r)
rowCollection.Add(FileDataGridView.Rows(row.Index))
Next
Else
rowCollection = FileDataGridView.Rows
End If
我认为rowCollection就像是单行数组, 但显然这并没有完成这项工作。 如果我想打印所有行,这可以正常工作,但对于选定的行,我得到一个错误,没有元素可以添加到行集合,因为DataGridView是数据绑定。我认为rowCollection可以按单行填充,不仅是指向整个DataGridView的链接。我哪里错了? 我也尝试只将.SelectedRows作为集合,但后来我得到类型错误,因为DataGridView.Rows和DataGridView.SelectedRows没有相同的格式? 我想获得行或选定行的列表/集合/数组,然后我可以使用它们进行打印。 任何帮助将不胜感激
的问候,
基督教
答案 0 :(得分:0)
肯定不是一个完美的解决方案,但能胜任:
Dim rows As List(Of DataGridViewRow)
Dim rowarray(DataGridView1.Rows.Count) As DataGridViewRow
If DataGridView1.SelectedRows.Count > 0 Then
DataGridView1.SelectedRows.CopyTo(rowarray, 0)
Else
DataGridView1.Rows.CopyTo(rowarray, 0)
End If
rows = rowarray.ToList
rows.RemoveAll(Function(a As DataGridViewRow) a Is Nothing)
SelectedRowCollection和RowCollection之间存在差异,因为他们没有为那些2使用继承性,所以你需要作弊一点来处理两种方式