|
■No43281 (だい さん) に返信
> データ型はすべてStringです。
その場合には、デザイン時(または実行時)に DataGridViewCheckBoxColumn のプロパティを
適切に設定してあげてください。
DataPropertyName = DataTable にマッピングさせる列名
FalseValue = オフの時に書き込まれる文字列
TrueValue = オンの時に書き込まれる文字列
これが適切で無い場合、.Value が Nothing となる可能性があります。
たとえば後述のコードを実行すると、そのままボタンを押せば
False,false,False
False,false,False
False,false,False
True,true,True
True,true,True
True,true,True
と出力されますが、ここで各行のチェックボックスを
・何もしない(Off なら Off のまま、On なら On のまま)
・クリック(Off なら On にし、On なら Off にする)
・2回クリック(Off → On → Off、On → Off → On にする)
の状態にしてからボタンを押すと、リストボックスの内容が
False,false,False
True,True,True
False,,False
True,true,True
False,,False
True,True,True
となり、列2 に[Nothing]の状態が表れてしまいます。
Public Class Form1
Private tbl As New DataTable()
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
tbl.Columns.Add("列1", GetType(String))
tbl.Columns.Add("列2", GetType(String))
tbl.Columns.Add("列3", GetType(Boolean))
tbl.Rows.Add("False", "false", False)
tbl.Rows.Add("False", "false", False)
tbl.Rows.Add("False", "false", False)
tbl.Rows.Add("True", "true", True)
tbl.Rows.Add("True", "true", True)
tbl.Rows.Add("True", "true", True)
'これらの処理は、デザイン時に行っておく事も出来ます。
DataGridView1.Columns.Clear()
Dim col1 As New DataGridViewCheckBoxColumn()
Dim col2 As New DataGridViewCheckBoxColumn()
Dim col3 As New DataGridViewCheckBoxColumn()
'列1のみ値を指定し、他2つは未設定のまま
col1.FalseValue = "False"
col1.TrueValue = "True"
col1.DataPropertyName = "列1"
col2.DataPropertyName = "列2"
col3.DataPropertyName = "列3"
DataGridView1.Columns.Add(col1)
DataGridView1.Columns.Add(col2)
DataGridView1.Columns.Add(col3)
DataGridView1.AllowUserToAddRows = False
DataGridView1.DataSource = tbl
End Sub
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
ListBox1.BeginUpdate()
ListBox1.Items.Clear()
For row As Integer = 0 To DataGridView1.RowCount - 1
ListBox1.Items.Add(String.Format("{0},{1},{2}", _
DataGridView1(0, row).Value, _
DataGridView1(1, row).Value, _
DataGridView1(2, row).Value))
Next
ListBox1.EndUpdate()
End Sub
End Class
|