VB.NER 【グリッド操作編】



目次


表の作成

表を作成する処理について解説します。

プログラムソース

Imports System
Imports System.Windows.Forms

Public Class Form1 : Inherits Form

   Private Grid1 As DataGridView

   Public Sub New()
      Me.Size = New Drawing.Size(340, 240)

      Grid1 = New DataGridView()
      Grid1.SetBounds(10,10,300,120)
      Grid1.ReadOnly = True
      Grid1.ColumnCount = 2
      Grid1.RowCount = 2

      Grid1.Columns(0).HeaderText = "社員コード"
      Grid1.Columns(1).HeaderText = "社員名"
      Grid1.Rows(0).Cells(0).Value = "1"
      Grid1.Rows(0).Cells(1).Value = "社員A"
      Grid1.Rows(1).Cells(0).Value = "2"
      Grid1.Rows(1).Cells(1).Value = "社員B"

      Me.Controls.Add(Grid1)

   End Sub

End Class

解説

GridViewコントロール = New DataGridView()

データグリッドビューのインスタンスを生成します。

Form.Controls.Add(GridViewコントロール)

データグリッドビューをフォームに追加します。


セル値の取得

セル値を取得する処理について解説します。

プログラムソース

Imports System
Imports System.Windows.Forms

Public Class Form1 : Inherits Form

   Private Grid1 As DataGridView
   Private Button1 As Button

   Public Sub New()

      InitializeComponent()

   End Sub

   Private Sub Button1_Click()

      MsgBox(Grid1.SelectedCells(0).Value)

   End Sub

   Private Sub InitializeComponent()
      Me.Size = New Drawing.Size(340, 240)

      Grid1 = New DataGridView()
      Grid1.SetBounds(10,10,300,120)
      Grid1.ReadOnly = True
      Grid1.ColumnCount = 2
      Grid1.RowCount = 2
      Grid1.Columns(0).HeaderText = "社員コード"
      Grid1.Columns(1).HeaderText = "社員名"
      Grid1.Rows(0).Cells(0).Value = "1"
      Grid1.Rows(0).Cells(1).Value = "社員A"
      Grid1.Rows(1).Cells(0).Value = "2"
      Grid1.Rows(1).Cells(1).Value = "社員B"
      Me.Controls.Add(Grid1)

      Button1 = New Button()
      Button1.SetBounds(10,140,100,40)
      Button1.Text = "値取得"
      AddHandler Button1.Click, AddressOf Button1_Click
      Me.Controls.Add(Button1)
   End Sub

End Class

解説

GridView.SelectedCells(0).Value

選択中のセル値を取得します。


行の追加

行を追加する処理について解説します。

プログラムソース

Imports System
Imports System.Windows.Forms

Public Class Form1 : Inherits Form

   Private Grid1 As DataGridView
   Private Button1 As Button

   Public Sub New()

      InitializeComponent()

   End Sub

   Private Sub Button1_Click()

    Grid1.Rows.Add()

    Dim MaxRow As Integer = Grid1.Rows.Count
    Grid1.Rows(MaxRow-1).Cells(0).Value=MaxRow
  Grid1.Rows(MaxRow-1).Cells(1).Value="社員" & Chr(64+MaxRow)

   End Sub

   Private Sub InitializeComponent()

      Me.Size = New Drawing.Size(340, 240)

      Grid1 = New DataGridView()
      Grid1.SetBounds(10,10,300,120)
      Grid1.ReadOnly = True
      Grid1.AllowUserToAddRows = False
      Grid1.ColumnCount = 2
      Grid1.Columns(0).HeaderText = "社員コード"
      Grid1.Columns(1).HeaderText = "社員名"
      Me.Controls.Add(Grid1)

      Button1 = New Button()
      Button1.SetBounds(10,140,100,40)
      Button1.Text = "行追加"
      AddHandler Button1.Click, AddressOf Button1_Click
      Me.Controls.Add(Button1)

   End Sub

End Class

解説

GridView.Rows.Add()

DataGridViewに行を追加します。


テーブルデータの表示

テーブルデータを表示する処理について解説します。

プログラムソース

Imports System
Imports System.Data
Imports System.Windows.Forms

Public Class Form1 : Inherits Form
   Private Grid1 As DataGridView
   Private Button1 As Button

   Public Sub New()

      Me.Size = New Drawing.Size(340, 240)

      Grid1 = New DataGridView()
      Grid1.SetBounds(10,10,300,120)
      Grid1.ReadOnly = True
      Grid1.AllowUserToAddRows = False
      Me.Controls.Add(Grid1)

      Button1 = New Button()
      Button1.SetBounds(10,140,100,40)
      Button1.Text = "表示"
      AddHandler Button1.Click, AddressOf Button1_Click
      Me.Controls.Add(Button1)

   End Sub

   Private Sub Button1_Click()

     Dim Cn As New OleDb.OleDbConnection
     Dim Cmd As New OleDb.OleDbCommand
     Dim Da As New OleDb.OleDbDataAdapter
     Dim Ds As New DataSet

     Cn.ConnectionString = "Provider=SQLOLEDB;" & _
           "Data Source=localhost\SQLExpress;" & _
           "Initial Catalog=Database;User ID=sa;Password=sa;"
     Cn.Open()

     Cmd.Connection = Cn
     Cmd.CommandText="SELECT 社員コード,社員名 FROM 社員マスタ"
     Da.SelectCommand = Cmd
     Da.Fill(Ds)

     Grid1.DataSource = Ds.Tables(0)

     Cn.Close()
     Ds.Dispose() : Da.Dispose() : Cmd.Dispose() : Cn.Dispose() 

  End Sub
End Class

解説

GridView.DataSource

表示対象を設定します。