- PR -

ListView内のチェックボックスを表示/非表示にするには(CheckBoxesプロパティ)

1
投稿者投稿内容
張允
会議室デビュー日: 2006/04/27
投稿数: 1
投稿日時: 2007-05-02 21:22
Visual Studio 2005 Team Edition
C# Windowsアプリケーション

ListViewに表示するチェックボックスについて質問させてください。
現在、ListViewのCheckBoxesプロパティをtrueにしてListViewの各項目にチェックボックスを表示させています。

ID      名前     権限
---------------------------------
□001     田中     0
□002     鈴木     1
□003     佐藤     0

上記のような状態で権限が1のユーザ列のチェックボックスのみ表示させ
それ以外のユーザ列のチェックボックスは非表示する実装を考えているのですが

ID      名前     権限
---------------------------------
 001     田中     0
□002     鈴木     1
 003     佐藤     0

CheckBoxesプロパティでは、全ての項目を表示/非表示するかどうかしか設定できず
また、ListViewにデータを追加する際に利用しているListViewItemクラスにも
チェックボックスの表示に関する操作を行なえるメンバが無く困っています。

このように特定行のチェックボックスを非表示にするには
(もしくはチェックできないようにするには)どのようにすればよいのでしょうか?
よろしくおねがいします。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2007-05-02 22:55
標準ではできないので、SmallIconを利用して自力で切り替えるのとか。
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-05-03 09:13
DataGridView を使えば、標準機能で同じようなものは作れると思います。
もちろん見栄えも変わってしまいますが。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-05-03 14:47
古くさい手法ですが、ListView の上に仮想 CheckBox を載せてしまうという方法もあります。
.NET で使う場合は、ユーザーコントロール化しないと不協和音が出ますけど。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-06-02 08:18
ListViewItem.StateImageIndex = 2

とすればチェックボックスは消えます。

ListViewItem.StateImageIndex = 0

でチェックされてないチェックボックス、

ListViewItem.StateImageIndex = 1

でチェックされたチェックボックスが表示されます。


[ メッセージ編集済み 編集者: れい 編集日時 2007-06-02 08:19 ]
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-06-02 09:24

間違える人がいそうなので追記。

StateImageIndex=2

とするとチェックボックスは消えますが、
クリックするとまた表示されます。
たぶんお望みになってる動作にするには
クリックできないようにする必要があると思いますが、
私はめんどくさくなってやめました。

ちなみに、「2」でなくても、
-1とか3とか14でもチェックボックス消えます。
-1のときだけ動作がちょっと違います。

どうして違うのか、どう違うのかはよくわかりません。

うまくCheckBoxの非表示ができたら教えてください。
1

スキルアップ/キャリアアップ(JOB@IT)