C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: DataGridViewでの行選択、列選択


(過去ログ 133 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■78833 / inTopicNo.1)  DataGridViewでの行選択、列選択
  
□投稿者/ show (1回)-(2016/02/20(Sat) 13:03:56)

分類:[.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を有効にしているから
 そういう動きになるのは当たり前だろうなぁ、と思っています)

ぜひ知恵をお貸しください。よろしくお願いします
引用返信 編集キー/
■78861 / inTopicNo.2)  Re[1]: DataGridViewでの行選択、列選択
□投稿者/ show (3回)-(2016/02/22(Mon) 08:32:28)
自己解決しました
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -