none
C#のListViewでSubitemにCheckBoxを表示したい RRS feed

  • 質問

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

    C#のListViewでSubitemにCheckBoxを表示したいのですが、
    やり方がわかりません。

    できれば詳細に御教示いただけないでしょうか。

    よろしくお願いいたします。

    2008年12月22日 0:32

回答

  • http://www.codeproject.com/KB/list/XPTable.aspx
    こんなのに頼るのはダメですか?

    2008年12月22日 0:42
  • オーナードローで自前で描画することになります。オーナードローのやり方は web で検索すればサンプルも見つかるでしょう。

    チェックボックスの描画には CheckBoxRenderer を使えば格好はつくかと思います。

    ユーザ入力によるチェック状態の変更は自分でイベントを起こさなければなりません。オーバーライドした OnMouseDown で押下された位置がチェックボックスに該当するかどうかを調べます。ListView.GetItemAt、ListViewItem.GetSubItemAt、ListViewSubItem.Bounds 辺りが使えるでしょう。

    ほかにはコントロールに再描画を促すための ListView.Invalidate とかも必要です。

     

    CodeProject とかを見に行けば高機能な ListView が公開されているかもしれません。解説やらは全部英語ですが、一般的に難しい英文ではないですし、それ以前にプロパティやメソッドを見れば大体分かる場合も多いです。

     

    WPF とデータバインディングを使えば柔軟にいけますが、そっちはそっちでまた習得が大変でしょうね。

    2008年12月22日 1:03
  • 可能であればDataGridViewのDataGridViewCheckBoxColumnを使う手もあります。

    2008年12月22日 1:24
    モデレータ
  • こちらが参考になりそうです。

     

    C# ListView multiple CheckBoxes Help.
    http://social.msdn.microsoft.com/forums/en-US/winforms/thread/1c25c338-2b50-4c30-aac6-b3676700dff6/

    2008年12月22日 11:12
    モデレータ

すべての返信

  • http://www.codeproject.com/KB/list/XPTable.aspx
    こんなのに頼るのはダメですか?

    2008年12月22日 0:42
  • オーナードローで自前で描画することになります。オーナードローのやり方は web で検索すればサンプルも見つかるでしょう。

    チェックボックスの描画には CheckBoxRenderer を使えば格好はつくかと思います。

    ユーザ入力によるチェック状態の変更は自分でイベントを起こさなければなりません。オーバーライドした OnMouseDown で押下された位置がチェックボックスに該当するかどうかを調べます。ListView.GetItemAt、ListViewItem.GetSubItemAt、ListViewSubItem.Bounds 辺りが使えるでしょう。

    ほかにはコントロールに再描画を促すための ListView.Invalidate とかも必要です。

     

    CodeProject とかを見に行けば高機能な ListView が公開されているかもしれません。解説やらは全部英語ですが、一般的に難しい英文ではないですし、それ以前にプロパティやメソッドを見れば大体分かる場合も多いです。

     

    WPF とデータバインディングを使えば柔軟にいけますが、そっちはそっちでまた習得が大変でしょうね。

    2008年12月22日 1:03
  • 可能であればDataGridViewのDataGridViewCheckBoxColumnを使う手もあります。

    2008年12月22日 1:24
    モデレータ
  • 御回答いただきましたみなさまへ

    いろいろ御回答いただきありがとうございます。

    御指摘いただいたCode ProjectのサンプルファイルはC#でのコンパイルが
    うまくいきませんでした。

    やはりOwnerDrawをやらないとだめでしょうか。
    できましたらOwnerDrawの参考になるHPと教えていただけると助かります。

    よろしくお願いします。


    2008年12月22日 10:41
  • こちらが参考になりそうです。

     

    C# ListView multiple CheckBoxes Help.
    http://social.msdn.microsoft.com/forums/en-US/winforms/thread/1c25c338-2b50-4c30-aac6-b3676700dff6/

    2008年12月22日 11:12
    モデレータ
  • こんにちは。中川俊輔 です。

     

    皆様、回答ありがとうございます。

     

    なっぷさん、フォーラムのご利用ありがとうございます。

    その後いかがでしょうか?

    勝手ながら、有用な情報と思われる回答へ回答済みチェックをつけさせていただきました。

     

    今後ともフォーラムをよろしくお願いします。

    それでは!

    2009年1月7日 7:12