tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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 と追加されてはいませんか?

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。