VB.NET2005です。
DataGridViewのボタン列をデータに応じて表示、非表示の
コントロールを行うことは可能でしょうか。
---------------------
区分 ボタン列
1 表示(ボタンのTEXT=1)
2 非表示
---------------------
として
---------------------
行番号 区分 ボタン列(表示=○、非表示=−)
1 1 ○
2 2 −
3 2 −
4 1 ○
5 2 −
---------------------
となるようにしたいのです。
よろしくお願い致します。
DataGridViewを使ったことはありませんが、たぶん
該当行の高さをゼロにすればいいのでは?
値を見ながら、CellPainting あたりで塗りつぶしてしまうとか。
-----
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
DataGridView1.AllowUserToAddRows = False
DataGridView1.Columns.Clear()
DataGridView1.Columns.AddRange(New DataGridViewTextBoxColumn(), New DataGridViewButtonColumn())
DataGridView1.Rows.Add(1, 1)
DataGridView1.Rows.Add(2, 2)
DataGridView1.Rows.Add(2, 2)
DataGridView1.Rows.Add(1, 1)
DataGridView1.Rows.Add(2, 2)
End Sub
Private Sub DataGridView1_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles DataGridView1.CellPainting
If e.ColumnIndex = 1 Then
If CStr(e.Value) = "2" Then
Dim selected As Boolean _
= DataGridViewElementStates.Selected _
= (e.State And DataGridViewElementStates.Selected)
e.PaintBackground(e.CellBounds, selected)
e.Handled = True
End If
End If
End Sub
=====
ベタな方法としては、値に対して個別にセルタイプを変更するとか。
-----
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
Dim T As New DataGridViewTextBoxColumn()
Dim B As New DataGridViewButtonColumn()
T.HeaderText = "区分"
B.HeaderText = "ボタン列"
B.Text = "押"
B.UseColumnTextForButtonValue = True
DataGridView1.AllowUserToAddRows = False
DataGridView1.Columns.Clear()
DataGridView1.Columns.AddRange(T, B)
DataGridView1.RowCount = 5
DataGridView1(0, 0).Value = 1
DataGridView1(0, 1).Value = 2
DataGridView1(1, 1) = New DataGridViewTextBoxCell()
DataGridView1(0, 2).Value = 2
DataGridView1(1, 2) = New DataGridViewTextBoxCell()
DataGridView1(0, 3).Value = 1
DataGridView1(0, 4).Value = 2
DataGridView1(1, 4) = New DataGridViewTextBoxCell()
End Sub
=====
お返事ありがとうございました。
前者の方法でばっちりです。
あきらめていたので実現してとても嬉しいです。
本当にありがとうございました。
ツイート | ![]() |