'■フォームにパネルとボタンをを貼り付けて以下のように変更してください
DataGridの内容をデータベースから取得して表示しています

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")

    'DB関連
    Dim oConn As New System.Data.OleDb.OleDbConnection()
    Dim dataAdapter1 As New System.Data.OleDb.OleDbDataAdapter()
    Dim command1 As New System.Data.OleDb.OleDbCommand()

    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

        'DBへの接続文字列
        Dim ConnectionString As String
        ConnectionString = "Provider=SQLOLEDB.1;"
        ConnectionString = ConnectionString + "Data Source=localhost;"
        ConnectionString = ConnectionString + "Persist Security Info=True;"
        ConnectionString = ConnectionString + "User ID=sa;"
        'ConnectionString = ConnectionString + "Password=;"
        ConnectionString = ConnectionString + "Initial Catalog=data1;"
        ConnectionString = ConnectionString + "Use Procedure for Prepare=1;"
        ConnectionString = ConnectionString + "Auto Translate=True;"
        ConnectionString = ConnectionString + "Packet Size=4096;"
        ConnectionString = ConnectionString + "Use Encryption for Data=False;"
        ConnectionString = ConnectionString + "Tag with column collation when possible=False"

        oConn.ConnectionString = ConnectionString

        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()

        'DBのフィールド名を設定する
        dgColumnStyle1.MappingName = "Field1" 'dataClumn1.ColumnName
        dgColumnStyle2.MappingName = "Field2" 'dataClumn2.ColumnName
        dgColumnStyle3.MappingName = "Field3" '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()

        command1.Connection = oConn
        command1.CommandText = "SELECT * FROM TABLE1"
        'SQL文を実行し、データを取得する
        dataAdapter1.SelectCommand = command1
        dataAdapter1.Fill(dataSet1, dataTable1.TableName)
        'データグリッドにテーブルを表示する
        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

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'テーブルの要素を消去
        dataTable1.Rows.Clear()
    End Sub
End Class



▲トップページ