none
listviewの1カラムの色を変えたい RRS feed

  • 質問

  • 今C#のwindows formで開発をしているのですが、listviewの1カラムだけ灰色にして見やすくしたいのですがスマートタグから変更出来ませんでしたので、ソースを書かなくてはいけないと思うのですがどのようにすればいいのでしょうか?お願いします。
    2007年2月22日 1:49

すべての返信

  • UseItemStyleForSubItemsプロパティを調べてみて下さい。
    2007年2月22日 2:41
    モデレータ
  • useItemStyleForSubItemsはtrueになっていますが・・・。
    2007年2月22日 5:01
  • KentaroM さん、こんにちは。

     KentaroM さんからの引用
    ソースを書かなくてはいけないと思うのですがどのようにすればいいのでしょうか?

    ソースですか?


    this.listView1.Items[0].SubItem[1].BackColor = System.Drawing.Color.Red;
     

    こういう感じです。

    2007年2月22日 5:07
  •  KentaroM さんからの引用
    useItemStyleForSubItemsはtrueになっていますが・・・。

    falseにして、じゃんぬさんのコードを記述してみて下さい。
    ただ、かなり重くなります。VS2003の頃、Windows98のマシンではつらく、急遽、カラムの色を変えないバージョンを作りました。(^^; 最近のマシンでは大丈夫かな・・・

    2007年2月22日 5:27
    モデレータ
  • アドバイスありがとうございます。教えていただいたコードでやってみたのですが、奇妙な感じになってしまいました。実際の背景は、カラムではなく一行だけで、しかもカラムのサイズを変えても背景は動かない感じになっています。どうしたらいいでしょうか・・・。
    2007年2月22日 5:58
  • ListViewにカラムは1つしか無いということなんでしょうか?
    であれば、useItemStyleForSubItemsはtrueのままでよく、

    listView1.Items[0].BackColor = Color.Red;

    みたいな感じでOKだと思います。

    2007年2月22日 6:40
    モデレータ
  • いえ、カラムは3つあります。windowsのフォルダ内の様に左の見出しだけ灰色にして見やすくしたかったんですけど・・・。
    2007年2月22日 7:53
  • KentaroM さん、こんにちは。

     KentaroM さんからの引用
    アドバイスありがとうございます。教えていただいたコードでやってみたのですが、奇妙な感じになってしまいました。実際の背景は、カラムではなく一行だけで、しかもカラムのサイズを変えても背景は動かない感じになっています。どうしたらいいでしょうか・・・。

    それは、私の書いたコードが Item 1 つしか変更していないサンプル コードだからです。
    Item 単位ではなく、Column 単位で変更したいのであれば、そのようにコードを組む必要があります。

    trapemiya さんが言っているのは、Row 単位のことです。

    2007年2月22日 9:27
  • イメージ的には、this.listView1.Columns[0].BackColor = System.Drawing.Color.Grey みたいか感じでいきたいんですけど、Columns[0]. でBackColor がインテリセンスに表示されません。listView1.Items[0].BackColor でも依然一行のみの表示になり、更に変なことに枠を変化しようとしても色だけ固定されています。これはuseItemStyleForSubItems を trueでも falseでも同じ結果になってしまいます。
    2007年2月23日 0:33
  • 例えば、以下のコードでバックカラーが変わります。

       listView1.Items[1].UseItemStyleForSubItems = false;
       listView1.Items[1].SubItems[1].BackColor = Color.Azure;

    2007年2月23日 0:53
    モデレータ
  •  KentaroM さんからの引用
    これはuseItemStyleForSubItems を trueでも falseでも同じ結果になってしまいます。

    が、どの文章に "係っている" のかわかりませんが、
    リファレンスで UseItemStyleForSubItems プロパティを見て、どういうものかを理解する方が先かもしれません。

    ところで、1 列の BackColor を変化させたいということで良いのでしょうか。
    これまでのやりとりですと、それすら微妙に伝わっていないように思えるのですが。

    そうだと仮定すると、サンプル コードはあくまでサンプルですから応用するという方向で考えましょう。

    2007年2月23日 0:53
  • だから、何度も言っているように、一列を表示させたいんだけど、一行しか表示されないの。
    2007年2月23日 1:06
  • あ~、わかりました。一行というのは一行全ての背景色ではなくて、ある一つの行の一つのカラム、つまり、一つのセルの背景色しか変わらないということですね?
    全ての行に関して、一つの列の背景色を変えたいのであれば、全ての行に対してそのカラムの背景色を指定しなければなりません。上で私が掲載したコードですと、2行目の2列目の背景色しか変わりません。

    2007年2月23日 1:12
    モデレータ
  • はい。そうですね。一列の色を変えたいんです。1セルではなく。縦に色を変えるといったことなんですね。
    2007年2月23日 1:20