グリッドのチェックボックスを行単位で表示するには


困疲  2008-04-24 13:47:39  No: 144694  IP: 192.*.*.*

いつもお世話になります。

開発環境は.NETのXPです。
グリッドにチェックボックスを表示する列を設定しています。
チェックボックスの表示を行単位で設定したいのですがわかりません。

教えていただけませんか。よろしくお願いします。

編集 削除
特攻隊長まるるう  2008-04-24 13:55:39  No: 144695  IP: 192.*.*.*

グリッド系のコントロールは沢山ありますので、
正確なコントロール名を書き込むようにしてください。
[VB.NET2003]では DataGrid
[VB2005]では DataGridView
が推奨されたグリッド系コントロールです。

しかし、[VB6.0]の MSFlexGrid を参照して使う場合も
ありますし、グレープシティ社製のコントロールを
使う場合もあります。グレープシティ社製のコントロール
では、さらにバージョンによって動作が違います。

編集 削除
困疲  2008-04-24 14:18:35  No: 144696  IP: 192.*.*.*

特攻隊長まるるう 様
返信ありがとうございます。
グリッドのコントロールが複数あることを知りませんでした。
失礼しました。
使用しているのは、DataGridViewです。

編集 削除
特攻隊長まるるう  2008-04-25 20:17:42  No: 144697  IP: 192.*.*.*

DataGridViewTextBoxColumn もしくは DataGridViewTextBoxCell を継承して自前で描画でしょうかね。

継承の時点で難易度は高めです。
しかも背景色程度なら比較的簡単ですが、チェックボックスとテキストボックスを切り替えるなら
ほぼ全ての機能を自分で作り直す必要があると思います。

とっかかりは
[DOBON.NET DataGridのセルに画像を表示する]
http://dobon.net/vb/dotnet/datagrid/drawimage.html

チェックボックスを継承するより、テキストボックスを継承してチェックを画像にしてしまった方が
良いでしょう。

編集 削除
魔界の仮面弁士  2008-04-25 20:36:51  No: 144698  IP: 192.*.*.*

> チェックボックスの表示を行単位で設定したいのですがわかりません。
行単位というか、セル単位で指定できますよ。


例として、2ステート版CheckBox と、3ステート版CheckBox とで、
合計 5 つのチェックボックスを配置してみました。


Dim dgv As New DataGridView()
dgv.AllowUserToAddRows = False
dgv.EditMode = DataGridViewEditMode.EditOnEnter
dgv.RowCount = 7
dgv.ColumnCount = 5
dgv.Dock = DockStyle.Fill
Controls.Add(dgv)

Dim c As DataGridViewCheckBoxCell

c = New DataGridViewCheckBoxCell()
c.Value = True
dgv(1, 1) = c
dgv.CurrentCell = c

c = New DataGridViewCheckBoxCell()
c.Value = False
dgv(3, 2) = c

c = New DataGridViewCheckBoxCell(True)
c.Value = CheckState.Checked
dgv(1, 3) = c

c = New DataGridViewCheckBoxCell(True)
c.Value = CheckState.Indeterminate
dgv(2, 4) = c

c = New DataGridViewCheckBoxCell(True)
c.Value = CheckState.Unchecked
dgv(3, 5) = c

dgv.AutoResizeColumns()

編集 削除