タイトル : Re^6: ListViewの項目表示 投稿日 : 2007/06/11(Mon) 17:45 投稿者 : 魔界の仮面弁士
> ItemCは下記の通り現状表示されている行数を変数に代入しています。 > ItemC = ListView().Items.Count ItemC は「その時点での ListView の行数」を意味しているのですね。 だとすれば、 > .Items.Add(ItemName.SubItems(0).Text, ItemC) この部分がおかしいです。 まず、ここで指定している「ItemName」という ListViewItem が、どの行を指しているのかが謎です。 既存行を表す変数なのであれば、何行目を表しているのか、その取得部分の説明がありませんし、 新規行を表す変数なのであれば、ここで Items.Add() でさらに作成する意味はありませんよね。 また、第2引数に指定された ItemC も奇妙です。ItemC には行数が入っているので、おそらくは 「行の位置を指定して、新規行を追加」という意図で書かれたのかと想像しますが、実際のところ、 .Items.Add(String, Integer) メソッドの第 2 引数は、行の位置を表わす引数ではなく、 各行に表示する「アイコン」を指定するためのものだからです。 今回、アイコンは関係無いのですから、ItemC を指定する必要はありません。 (もしアイコンを表示したいのであれば、ItemC を指定するのは間違いでしょう) > .Items(ItemC).SubItems.Add(ItemName.SubItems(1).Text) ここで指定している .Items(ItemC) が、どの行を表しているのかを再確認すべきかと。 もし既存行だとしたら、ここの Add により、4列目以降ができてしまいますから…。 > 5/2 bbb 1 ---この行を既存のリストビューに新規で追加作業を行いたい 新規行の作り方は、No.5614 で回答したとおりです。すなわち、 Dim newItem As ListViewItem = ListView1.Items.Add("5/2") newItem.SubItems.Add("bbb") newItem.SubItems.Add("1") ですよね。 > 日付 名前 数量 > 5/1 aaa 1 > 5/2 ---この様に一番左の列の項目のみ表示される > このときDebug.Printを使用し中身を確認すると Debug.Print …ということは、VB2005 なのですね。 > ちゃんと "5/2 bbb 1" と変数に格納されています。 2列目(名前) と 3列目(数量) が空っぽで、誤って 4列目に bbb、5列目に 1 と追加されてはいませんか? |