DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ListViewのカラム幅

環境/言語:[XP, C#]
分類:[.NET]

C#の可能性が見えてきて、いろいろやってみたくなる今日この頃ですが、最近、
ListViewをいじっています。
.NET Tips中の「ListViewの列の幅を自動調節する」のサンプル例を表示させようと、
稚拙ですが以下のコードを書きましたが、文字は何も表示されません。

    ColumnHeader ch = new ColumnHeader();
    ch.Text = "文字列";
    ch.Width = -1;
    ch.TextAlign = HorizontalAlignment.Center;
    listView1.Columns.Add(ch);
    //
    ColumnHeader ch2 = new ColumnHeader();
    ch2.Text = "数値";
    ch2.Width = -1;
    ch2.TextAlign = HorizontalAlignment.Right;
    listView1.Columns.Add(ch2);
    //
    listView1.Items.Add("おはよう");
    listView1.Items[0].SubItems.Add("80");
      (以下略)
そこで、-1を適当な数(たとえば50)にすると表示されます。もちろん幅は固定です。
どうすれば、サンプルのように表示されるのでしょうか。
こんにちわ。

値をセットした後に。foreach で回せば自動調節されませんか?

> listView1.Items.Add("おはよう");
> listView1.Items[0].SubItems.Add("80");

//ここで、サンプルと同じように、foreachを回す
  • 題名: Re[2]: ListViewのカラム幅
  • 著者: show_land
  • 日時: 2005/05/07 16:21:02
  • ID: 10711
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
pinpiさん、連休で見ていませんでした。さっそく、連休ボケの頭でやってみました。
前のできなかったソースの下に以下を追加したら、ちゃんとできました。

listView1.Items.Add("こんにちは");
listView1.Items[1].SubItems.Add("5");
listView1.Items.Add("おやすみ");
listView1.Items[2].SubItems.Add("100");
//ListView1のすべての列を自動調節
foreach (ColumnHeader ched in listView1.Columns)
{
ched.Width = -1;
}
ヘッダー部分を2箇所でいじる、というのは美しくない気もしますが、
できているのですから文句のつけようがありません。
助かりました、ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板