クエリの結果を使用してDataGridViewを生成します。クエリは、多数の列(75を超える)を生成します。明らかに、DataGridViewはそれらすべてを表示するわけではありません。
DataGridViewからデータを抽出し、Excelファイルまたは.csvファイルを生成する小さなプロシージャを作成しました。
私が面白いと思うのは、列ヘッダーを除いて、Excelと.csvの両方が正しく生成されていることです!つまり、列ヘッダーを除いて、すべてのセルがファイルに書き込まれます。
次に、DataGridViewが列ヘッダーを視覚化しない場合、それらの値を設定しないことを発見しました。
そこで、次の恐ろしいコードを記述して、DataGridViewを水平方向にスクロールし、列ヘッダーがDataGridViewで視覚化され、Excelまたは.csvへの抽出が機能するようにしました。
Friend Sub ScrollTheGridToSeeColumnHeaders(ByRef dgvTheGrid As DataGridView)
If dgvTheGrid.RowCount = 0 Then
Exit Sub
End If
dgvTheGrid.SuspendLayout()
For i32ScorriCol As Int32 = 0 To dgvTheGrid.ColumnCount - 1 Step dgvTheGrid.DisplayedColumnCount(True)
dgvTheGrid.FirstDisplayedScrollingColumnIndex = dgvTheGrid.Columns(i32ScorriCol).Index
dgvTheGrid.Refresh()
Next
dgvTheGrid.ResumeLayout()
dgvTheGrid.CurrentCell = dgvTheGrid(0, 0)
End Sub
これは機能しますが、ユーザーへの影響は本当にひどいものです(グリッドが最後までスクロールしているのを見て、ある種の悪い間違いをしたと思っています...)。
これらすべての列をこのような恐ろしい方法でスクロールせずにトリックを実行するための提案はありますか?
よろしくお願いします!