'■フォームにパネルとボタンをを貼り付けて以下のように変更してください
Public Class Form1
Inherits System.Windows.Forms.Form
ここにたくさんあって・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
Friend WithEvents DataGrid1 As New CustomDataGrid()
'テーブルを作成
Dim dataSet1 As New DataSet("dataSet1")
Dim dataTable1 As DataTable = dataSet1.Tables.Add("Table1")
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'二重起動の禁止
'Prohibition of double starting
If UBound(Diagnostics.Process.GetProcessesByName( _
Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then
Application.Exit()
End If
GridInit()
GridShow()
End Sub
'DataGridの作成と初期化、一度しか読み出せません
Private Sub GridInit()
DataGrid1.Font = Me.Font
'ヘッダーに線を引く
DataGrid1.headerLine = True
'タブキーを押されたときに移動するコントロールの指定
DataGrid1.NextControl = Button1
Panel1.BorderStyle = BorderStyle.FixedSingle
Panel1.Controls.Add(DataGrid1)
'Panelの中央に貼り付けます
DataGrid1.Dock = DockStyle.Fill
'ボーダースタイルの変更
DataGrid1.BorderStyle = BorderStyle.None
'行のヘッダーを消す
' DataGrid1.ColumnHeadersVisible = False
'新しい行の追加、編集、削除を禁止する
DataGrid1.ReadOnly = True
'Captionの表示を消します
DataGrid1.CaptionVisible = False
' テーブルのスタイルを作成
Dim dgTableStyle As New DataGridTableStyle()
dgTableStyle.MappingName = dataTable1.TableName
' *** 列ヘッダーによるソートを禁止 ***
dgTableStyle.AllowSorting = False
'列のヘッダを消す
dgTableStyle.RowHeadersVisible = False
'ラインカラーの変更
dgTableStyle.GridLineColor = Color.Black
DataGrid1.TableStyles.Add(dgTableStyle)
'1行おきに色をつける
dgTableStyle.AlternatingBackColor = Color.FromArgb(220, 255, 255)
Dim dataClumn1 As DataColumn = dataTable1.Columns.Add()
Dim dataClumn2 As DataColumn = dataTable1.Columns.Add()
Dim dataClumn3 As DataColumn = dataTable1.Columns.Add()
Dim dataClumn4 As DataColumn = dataTable1.Columns.Add()
' テーブルの列のスタイルを作成
Dim dgColumnStyle1 As New ColorDataGridTextBoxColumn()
Dim dgColumnStyle2 As New DataGridTextBoxColumn()
Dim dgColumnStyle3 As New DataGridTextBoxColumn()
Dim dgColumnStyle4 As New DataGridTextBoxColumn()
dgColumnStyle1.MappingName = dataClumn1.ColumnName
dgColumnStyle2.MappingName = dataClumn2.ColumnName
dgColumnStyle3.MappingName = dataClumn3.ColumnName
dgColumnStyle4.MappingName = dataClumn4.ColumnName
'列の幅を決定
dgColumnStyle1.Width = 100
dgColumnStyle2.Width = 50
dgColumnStyle3.Width = 50
dgColumnStyle4.Width = 50
'列の右ぞろえ、中央ぞろえ、左ぞろえを設定
dgColumnStyle1.Alignment = HorizontalAlignment.Center
dgColumnStyle2.Alignment = HorizontalAlignment.Left
dgColumnStyle3.Alignment = HorizontalAlignment.Right
dgColumnStyle4.Alignment = HorizontalAlignment.Right
'ヘッダーのテキストを設定
dgColumnStyle1.HeaderText = " いなば" '2002ではバグがあり、Centerをスペースでごまかしています。
dgColumnStyle2.HeaderText = "てすと"
dgColumnStyle3.HeaderText = "こんにちは"
dgColumnStyle4.HeaderText = "世界"
'列のスタイルをテーブル・スタイルに登録
dgTableStyle.GridColumnStyles.Add(dgColumnStyle1)
dgTableStyle.GridColumnStyles.Add(dgColumnStyle2)
dgTableStyle.GridColumnStyles.Add(dgColumnStyle3)
dgTableStyle.GridColumnStyles.Add(dgColumnStyle4)
End Sub
'何度でも読み出して表の値を書き換えられます。
Private Sub GridShow()
'重い処理の可能性があるためカーソルを砂時計に換える
Dim BkCur As Cursor = Cursor.Current '現在のカーソルを取っておく
Cursor.Current = Cursors.WaitCursor '砂時計カーソルに入れ替える
'選択行を取得
Dim line As Integer = DataGrid1.GetTopRow()
'先頭行を設定 存在しない行を指定するとエラーになる
DataGrid1.SetTopRow(0)
'データグリッドの更新前に列ヘッダーによるソートを保存する
Dim sortpos As Boolean = DataGrid1.TableStyles.Item(dataTable1.TableName).AllowSorting
DataGrid1.TableStyles.Item(dataTable1.TableName).AllowSorting = False
'テーブルの要素を消去
dataTable1.Rows.Clear()
'テーブルにデータを追加
Dim i As Integer
For i = 0 To 100
dataTable1.Rows.Add(New Object() {"今日は" & i.ToString, "せいてん", i, i})
Next i
'データグリッドにテーブルを表示する
DataGrid1.SetDataBinding(dataSet1, dataTable1.TableName)
'列ヘッダーによるソートを復元する
DataGrid1.TableStyles.Item(dataTable1.TableName).AllowSorting = sortpos
'選択行を設定 行数が変更される場合は存在しない行を指定するとエラーになる
DataGrid1.SetTopRow(line)
Cursor.Current = BkCur '取っておいたカーソルに戻す
End Sub
'指定行を選択します
'A specification line is chosen.
Private Sub lineSelected(ByVal LineNo As Integer)
DataGrid1.CurrentCell = New DataGridCell(LineNo, 0)
Dim i As Integer
For i = 0 To dataTable1.Rows.Count - 1
DataGrid1.UnSelect(i)
Next
DataGrid1.Select(LineNo)
'DataGrid1.SetTopRow(LineNo)
DataGrid1.Refresh()
End Sub
'一行単位の選択に変更
'It changes into selection of a party unit.
Private Sub DataGrid1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles DataGrid1.Paint
If (Not dataTable1.Rows.Count <= 0) Then
Dim Cell As DataGridCell
Cell = DataGrid1.CurrentCell
' .RowNumber The selected sequence
' .ColumnNumber The selected sequence
DataGrid1.Select(Cell.RowNumber) 'A line is chosen.
End If
End Sub
End Class