|
分類:[.NET 全般]
最近VB.NETを勉強し始めた者です。
「DataGridViewColumnSortMode.NotSortable」を使用して 「DataGridViewSelectionMode.FullColumnSelect」 と 「DataGridViewSelectionMode.FullRowSelect」を同時に動作させることは可能でしょうか?
以下、目標としている仕様 ・列ヘッダークリック時に対象の列を全選択状態に ・行ヘッダークリック時に対象の行を全選択状態に ・セルをクリックすれば、クリックした対象のセルだけ選択状態に
現在のDataGridViewでの表示方法 ・クエリ情報を取得後DataTableに「DataReader」を「DataTable.Load()」を使用して読み込ませる ・DataGridViewにDataTableを投げ込み、データを表示 ・CellPaintingハンドラで行ヘッダに連番を表示
以下、CellPaintingハンドラで呼び出したスクリプト ================================================ Private Sub DataGridView1_CellPainting(ByVal sender As Object, ByVal e As DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting If e.ColumnIndex < 0 And e.RowIndex <= View_val Then e.Paint(e.ClipBounds, DataGridViewPaintParts.All)
Dim indexRect As Rectangle = e.CellBounds indexRect.Inflate(-2, -2) If e.RowIndex >= 0 Then TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), e.CellStyle.Font, indexRect, _ e.CellStyle.ForeColor, TextFormatFlags.Right Or TextFormatFlags.VerticalCenter) End If e.Handled = True End If ***ここで各列のソート機能を無効にする*** For Each c As DataGridViewColumn In DataGridView1.Columns c.SortMode = DataGridViewColumnSortMode.NotSortable Next c
***列選択時に対象の列全選択 DataGridView1.SelectionMode = DataGridViewSelectionMode.FullColumnSelect End Sub
================================================
上記の記述方法だと列ヘッダーをクリックすれば確かに対象の列全体を選択することは可能ですが 行ヘッダーをクリック時に対象の行全体の選択の機能は働かず、 また、ヘッダーではなくセルをクリックしても対象の列全体を選択する機能が働きます。 (列全体を選択する機能が働くのはDataGridViewSelectionMode.FullColumnSelectを有効にしているから そういう動きになるのは当たり前だろうなぁ、と思っています)
ぜひ知恵をお貸しください。よろしくお願いします
|