今日から何回か DataGridView です。
DataGridView は機能がいっぱいありすぎて一日では遊びきれません。
しかも何から手を付けてよいやら...
困ったなぁ...
(特にコントロール関連で)困った時には、えムナウのプログラミングのページ です。
ってことで、
DataGridViewコントロール-内部コントロールの種類(えムナウのプログラミングのページ) にある
画像の"もどき"を、VB で実装してみました。( BindingNavigator は除く...)
■参考文献
DataGridViewコントロール-内部コントロールの種類(えムナウのプログラミングのページ)
DataGridView コントロール (Windows フォーム)
DataGridView クラス
DataGridViewColumn クラス
DataGridViewTextBoxColumn クラス
DataGridViewImageColumn クラス
DataGridViewCheckBoxColumn クラス
DataGridViewComboBoxColumn クラス
DataGridViewLinkColumn クラス
DataGridViewButtonColumn クラス
■実行画像
Public Class DataGridViewTest
Private Sub DataGridViewTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Size = New Size(600, 300)
'' TabControl に DataGridView を描画する。
Dim tabCntrl As TabControl = New TabControl
Me.Controls.Add(tabCntrl)
tabCntrl.Dock = DockStyle.Fill
tabCntrl.TabPages.Clear()
' TabPage の追加
Dim dgView1 As DataGridView = New DataGridView
Me.AddTabPage(tabCntrl, "DataGridViewコントロール-内部コントロールの種類", dgView1)
Me.DataGridViewコントロール_内部コントロールの種類(dgView1)
End Sub
Private Sub DataGridViewコントロール_内部コントロールの種類(ByVal dgView As DataGridView)
dgView.Columns.Clear()
' Text
Dim textCol As DataGridViewTextBoxColumn = New DataGridViewTextBoxColumn
textCol.HeaderText = "Text"
textCol.Width = 50
dgView.Columns.Add(textCol)
' Image
Dim imageCol As DataGridViewImageColumn = New DataGridViewImageColumn
imageCol.HeaderText = "Image"
imageCol.Width = My.Resources.中さん.Width ' 中さんの幅に合わせる
dgView.Columns.Add(imageCol)
' Check
Dim checkCol As DataGridViewCheckBoxColumn = New DataGridViewCheckBoxColumn
checkCol.HeaderText = "Check"
checkCol.Width = 50
dgView.Columns.Add(checkCol)
' Combo
Dim comboCol As DataGridViewComboBoxColumn = New DataGridViewComboBoxColumn
comboCol.HeaderText = "Combo"
comboCol.Width = 100
dgView.Columns.Add(comboCol)
' コンボボックスのデータソースを作る。
Dim comboSource As DataTable = New DataTable("dogkind")
comboSource.Columns.Add("kindName", GetType(String))
comboSource.Rows.Add("Shiba")
comboSource.Rows.Add("Dachshund")
comboCol.DataSource = comboSource
comboCol.DisplayMember = comboSource.Columns(0).ColumnName
' Link
Dim linkCol As DataGridViewLinkColumn = New DataGridViewLinkColumn
linkCol.HeaderText = "Link"
linkCol.LinkColor = Color.LightSeaGreen ' リンクの色を変える
linkCol.Width = 100
dgView.Columns.Add(linkCol)
' Button
Dim buttonCol As DataGridViewButtonColumn = New DataGridViewButtonColumn
buttonCol.HeaderText = "Button"
buttonCol.Width = 100
dgView.Columns.Add(buttonCol)
'' 行を追加する
Dim index As Integer = dgView.Rows.Add("わんくま", My.Resources.中さん, True, "Shiba", "LinkTest", "ButtonTest")
dgView.Rows(index).Height = My.Resources.中さん.Height ' 中さんの高さに合わせる
'' Cell の中身がクリックされた時のイベントハンドラを登録する
AddHandler dgView.CellContentClick, AddressOf OnCellContentClick
End Sub
' Cell の中身がクリックされた時のイベントハンドラ
Private Sub OnCellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)
If e.ColumnIndex = 1 AndAlso e.RowIndex = 0 Then
MessageBox.Show("中さんがくりっくされました")
Else
Dim dgView As DataGridView = DirectCast(sender, DataGridView)
MessageBox.Show(dgView.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString())
End If
End Sub
' TabPage を追加する
Private Sub AddTabPage(ByVal tabCntrl As TabControl, _
ByVal tabPageText As String, _
ByVal dgView As DataGridView)
Dim tp As TabPage = New TabPage(tabPageText)
tp.Controls.Add(dgView)
dgView.Dock = DockStyle.Fill
tabCntrl.TabPages.Add(tp)
End Sub
End Class