- - PR -
ListViewSubItemについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-08 16:30
こんにちは。
リストビューコントロールのサブアイテムの描画で少々納得できないことがあり、 投稿します。 サブアイテム部分は数パターンの値しか入らないのでサブアイテムのオブジェクトを 共有しようと思い、試しました。 オブジェクトの共有自体はできたのですが、その値を変更したときに画面上で変更されません。 こういうものなのでしょうか? 以下に簡単な再現コードを書きます。 private ListViewItem.ListViewSubItem mySubItem=new ListViewItem.ListViewSubItem(); private void サブアイテム共有() { this.mySubItem.Text="共有"; for (int i=0;i<10000;i++) { ListViewItem item=new ListViewItem(); item.Text=i.ToString(); item.SubItems.Add(this.mySubItem); this.listView1.Items.Add(item); } } private void 共有サブアイテムテキスト変更() { this.mySubItem.Text="変更"; MessageBox.Show(this.listView1.Items[0].SubItems[1].Text); //メッセージボックスには"変更"と表示されるがリストビュー内に表示されているのは //"共有"のまま } OSはWindows2000、Frameworkは1.1を使用しています。 | ||||
|
投稿日時: 2007-03-08 16:36
うっ、直に変更しても表示は変わりませんでした・・・・
this.listView1.Items[0].SubItems[1].Text="変更"; MessageBox.Show(this.listView1.Items[0].SubItems[1].Text); //メッセージボックスには"変更"と表示されるがリストビュー内に表示されているのは //"共有"のまま こういうものなのでしょうか? | ||||
|
投稿日時: 2007-03-09 22:55
うっどさん、こんにちは
ダッチです。
ListViewItem.ListViewSubItem のコンストラクの別のオーバーロードに owner : ListViewItem を取るものがあります。 その owner に設定された ListViewItem 内でしか共有されないようです。 そのため、複数の ListViewItem にまたがっての共有は出来ないですね。 無理やり使用としても今回の現象が発生するようです。 | ||||
|
投稿日時: 2007-03-13 13:04
ダッチさん、ご回答ありがとうございました。
やはりこういうものなのですね、共有はあきらめます。 | ||||
|
投稿日時: 2007-03-13 13:09
ListViewSubItem以外でも通常「共有」なんてできないんじゃない?
自身のハンドルと親ハンドルの関係で。 | ||||
|
投稿日時: 2007-03-13 18:13
ぶさいくろうさん、こんにちは。
ListViewSubItemはオブジェクトから派生したものなので できるかなと愚考した次第です。 結局駄目だったわけですが・・・ |
1