|
||||||||||||||||||||||||||||||||||||||
開発環境 | WindowsVista VB2010(VS2010 Pro) Framework 4 / ターゲットCPU:X86 [Option Compare Text] [Option Explicit On] [Option Infer On] [Option Strict On]で設定 |
|||||||||||||||||||||||||||||||||||||
その他条件 | 使用データ(dgvdat1.csv)は、次よりダウンロードして使って下さい。 dgvdat309.zip データファイルは、プログラムの起動フォルダーに入れておいてください。 DataGridViewに表示(その1) で、データを表示した状態で実施してください。 下記サンプルコードと同等のイベントで実施してください。 |
|||||||||||||||||||||||||||||||||||||
1.DataGridView の指定の列目までをスクロールされないように設定 Private Sub Button81_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button81.Click '2列目までをスクロールされないように設定 DataGridView1.Columns(1).Frozen = True 'これで元に戻りそうに思うのだが、実際には元に戻らない DataGridView1.Columns(1).Frozen = False DataGridView1.Columns(0).Frozen = False 'こちらでないと元に戻らない End Sub |
||||||||||||||||||||||||||||||||||||||
2.DataGridView の指定列を非表示に設定 Private Sub Button82_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button82.Click '指定列(Columns(0))を非表示に設定 DataGridView1.Columns(0).Visible = False End Sub |
||||||||||||||||||||||||||||||||||||||
3.DataGridView の指定列のセルに含まれるテキスト形式の内容を複数行で表示 Private Sub Button83_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button83.Click '指定列のデータを折り返して表示する場合 '2列目を複数行表示設定に 'WrapMode が True の場合は、改行文字が改行として表示され、 'セル幅を超える行はすべて折り返して表示される。 DataGridView1.Columns(1).DefaultCellStyle.WrapMode = DataGridViewTriState.True '表示テスト用のデータをセルに書き込み DataGridView1.Rows(3).Cells(1).Value = "4行目の" & vbCrLf & "2列目に" & vbCrLf & "書き込み" '指定列のセルに含まれるテキスト形式の内容を 1 行で表示する場合 DataGridView1.Columns(1).DefaultCellStyle.WrapMode = DataGridViewTriState.False End Sub |
||||||||||||||||||||||||||||||||||||||
4.DataGridView の指定列の表示スタイルを設定 Private Sub Button84_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button84.Click '(1)指定列のフォントを設定 Dim cstyle As New DataGridViewCellStyle cstyle.Alignment = DataGridViewContentAlignment.MiddleRight cstyle.Font = New Font("MS ゴシック", 9, FontStyle.Bold) cstyle.Format = "N1" '(5)下1桁で0揃え(小数点を表示する場合) DataGridView1.Columns(6).DefaultCellStyle = cstyle '(2)指定列を日付の書式設定で表示 '日付データが設定されたいる列で試してください。 DataGridView1.Columns(3).DefaultCellStyle.Format = "yyyy年MM月dd日" '(3)指定列を3桁区切りスタイルで表示 DataGridView1.Columns(5).DefaultCellStyle.Format = "#,##0" '(4)指定列を縦方向上揃え、水平方向右揃えで表示 DataGridView1.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight End Sub |
||||||||||||||||||||||||||||||||||||||
5.DataGridView の指定列を左端に表示する Private Sub Button85_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button85.Click '3列目を左端に表示する DataGridView1.FirstDisplayedScrollingColumnIndex = 2 End Sub |
||||||||||||||||||||||||||||||||||||||
6.DataGridView のセルの内容に合わせて全ての列の幅を自動調整 Private Sub Button86_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button86.Click '(1)全ての列幅を文字列のサイズに合せる場合 DataGridView1.AutoResizeColumns() '(2)全ての列幅を指定のサイズ設定する場合 For i As Integer = 0 To DataGridView1.Columns.Count - 1 DataGridView1.Columns(i).Width = 100 '(既定値 100) Next End Sub |
||||||||||||||||||||||||||||||||||||||
7.DataGridView の指定の列に画像(イメージ、アイコン)を表示する 下記サンプルでは、新たに列を挿入してその列を Image 列に設定して、アイコンを合計点により変えて表示しております。 (アイコンは、ご自分で用意するか、添付の物を起動フォルダーに入れてお使いください) Private Sub Button87_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button87.Click '(1)イメージ列を作成しアイコンを表示する Dim imageColumn As New DataGridViewImageColumn() With imageColumn .Image = Nothing ' Bitmap.FromFile("..\..\FACE03.ICO") .Name = "評価" .HeaderText = "評価" '(2)セルにエラー画像?(四角に赤い×の画像)が表示されないようにする .DefaultCellStyle.NullValue = Nothing .Width = 50 End With DataGridView1.Columns.Insert(0, imageColumn) '列を挿入 For i As Integer = 0 To DataGridView1.Rows.Count - 2 Dim se As Integer = CInt(DataGridView1.Item(6, i).Value) Select Case se '(3)セルの値により表示する画像を選択する Case Is > 260 DataGridView1("評価", i).Value = New Bitmap("FACE03.ICO") Case Is > 220 DataGridView1("評価", i).Value = New Bitmap("FACE02.ICO") Case Is > 180 DataGridView1("評価", i).Value = New Bitmap("FACE01.ICO") Case Else DataGridView1("評価", i).Value = New Bitmap("FACE04.ICO") End Select Next i End Sub |
||||||||||||||||||||||||||||||||||||||
8.DataGridView でユーザーが列のサイズ変更をできないように設定 Private Sub Button88_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button88.Click 'ユーザーが列のサイズ変更をできないように設定する場合 DataGridView1.AllowUserToResizeColumns = False 'ユーザーが列のサイズ変更をできるように設定する場合 DataGridView1.AllowUserToResizeColumns = True End Sub |
||||||||||||||||||||||||||||||||||||||
9.DataGridView の列のデータに合せてIMEのモードを設定する Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, _ ByVal e As DataGridViewEditingControlShowingEventArgs) _ Handles DataGridView1.EditingControlShowing '(1)指定の列が TextBox タイプかを調べる If TypeOf e.Control Is DataGridViewTextBoxEditingControl Then Dim txtbox As DataGridViewTextBoxEditingControl = _ CType(e.Control, DataGridViewTextBoxEditingControl) Dim dgv As DataGridView = CType(sender, DataGridView) '(2)2列目の場合は、IME モードをひらがなに設定 If dgv.CurrentCell.ColumnIndex = 1 Then txtbox.ImeMode = ImeMode.Hiragana Else '(3)上記以外は、OFF に txtbox.ImeMode = ImeMode.Off End If End If End Sub |
||||||||||||||||||||||||||||||||||||||
10.DataGridView のユーザーがマウスのドラッグで列の順序を変更できるように設定 Private Sub Button90_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button90.Click '列の順番の入れ替えを有効にする(マウスのドラッグ操作で) DataGridView1.AllowUserToOrderColumns = True '列の順番の入れ替えを無効にする(既定値) DataGridView1.AllowUserToOrderColumns = False End Sub |
||||||||||||||||||||||||||||||||||||||
11.DataGridView の指定の列を削除する Private Sub Button91_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button91.Click '1列目を削除する DataGridView1.Columns.RemoveAt(0) '行に関する操作関係の、DataGridView のクリックした行を確認の上削除 の項も参考に End Sub |
||||||||||||||||||||||||||||||||||||||
12.DataGridView の指定位置に列を挿入する Private Sub Button92_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button92.Click '列の挿入(列の追加) Dim newColumn As New DataGridViewTextBoxColumn DataGridView1.Columns.Insert(2, newColumn) End Sub |
||||||||||||||||||||||||||||||||||||||
13.DataGridView の指定の列の幅を設定する Private Sub Button93_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button93.Click '(1)セルの内容に合わせて、指定された列の幅を自動調整(処理に少し時間が掛かる) '全ての列幅を自動調整(DataGridView1.AutoResizeColumns())と間違えないように DataGridView1.AutoResizeColumn(0) '(2)幅が解っているなら下記のように直接指定した方が早い DataGridView1.Columns(0).Width = 45 '(3)全ての列に設定する場合 For i As Integer = 0 To DataGridView1.Columns.Count - 1 Select Case i Case 0 DataGridView1.Columns(i).Width = 45 Case 1 DataGridView1.Columns(i).Width = 90 Case 2, 3, 4, 5, 6 DataGridView1.Columns(i).Width = 70 End Select Next End Sub |
||||||||||||||||||||||||||||||||||||||
14.DataGridView の指定の列を選択状態にする Private Sub Button94_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button94.Click '(1)SortMode が Automatic の場合列単位での選択ができないので For i = 0 To DataGridView1.Columns.Count - 1 DataGridView1.Columns(i).SortMode = DataGridViewColumnSortMode.Programmatic Next i '(2)列のヘッダーまたは列内のセルをクリックすることによって列全体が選択されるように変更 DataGridView1.SelectionMode = DataGridViewSelectionMode.FullColumnSelect '(3)2列目を全て選択状態にする DataGridView1.Columns(1).Selected = True '選択されているセル数・行数・列数を取得する '選択されているセル数を取得 Debug.WriteLine(DataGridView1.SelectedCells.Count) '選択されている行数を取得 Debug.WriteLine(DataGridView1.SelectedRows.Count) '(4)選択されている列数を取得 Debug.WriteLine(DataGridView1.SelectedColumns.Count) End Sub |
||||||||||||||||||||||||||||||||||||||
15.DataGridView の指定の列を編集不可(読み取り専用)に設定 Private Sub Button95_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button95.Click '2列目(氏名の列)を編集不可に設定 DataGridView1.Columns(1).ReadOnly = True '上記編集不可の設定を元に戻す DataGridView1.Columns(1).ReadOnly = False End Sub |
||||||||||||||||||||||||||||||||||||||
16.DataGridView の指定の列のみに罫線を描画する Private Sub DataGridView1_CellPainting(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) _ Handles DataGridView1.CellPainting '指定列以外及びヘッダー部分は除く If e.ColumnIndex = 5 And e.RowIndex >= 0 Then '描画する範囲を設定 Dim newRect As New Rectangle(e.CellBounds.X, e.CellBounds.Y, _ e.CellBounds.Width, e.CellBounds.Height) 'セルの内部を塗りつぶしす e.Graphics.FillRectangle(New SolidBrush(e.CellStyle.BackColor), e.CellBounds) 'セルを描画する(線の太さを2ピクセルで) e.Graphics.DrawRectangle(New Pen(New SolidBrush(Color.Cyan), 2), newRect) If (e.Value IsNot Nothing) Then 'セル内のデータを描画する TextRenderer.DrawText(e.Graphics, CStr(e.Value), _ e.CellStyle.Font, e.CellBounds, e.CellStyle.ForeColor, _ TextFormatFlags.Right Or TextFormatFlags.VerticalCenter) End If '処理の完了を通知 e.Handled = True End If 'DataGridView コントロールのセルの外観をカスタマイズする 'http://msdn.microsoft.com/ja-jp/library/hta8z9sz.aspx End Sub |
||||||||||||||||||||||||||||||||||||||