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

Listviewのinsertでviewがicon時動作

環境/言語:[WINXP、VB.NET2005、.NET Framework2.0]
分類:[.NET]

2006/08/04(Fri) 09:49:49 編集(投稿者)
2006/08/04(Fri) 09:49:39 編集(投稿者)

こんにちは。
初めて書き込みます。
いろいろと調べては見たのですが解決方法が見つからないのですが、
ListViewコントロールでViewプロパティがSmallIcon,LargeIconの設定の時に

Dim newItem As ListViewItem
Dim srcItem As ListViewItem
Dim destIndex As Integer

newItem = ListView.Items.Insert(destIndex, srcItem)

と記述して実行した時になぜか追加した項目が指定のインデックスの場所に
挿入されずに最下行に追加されてしまいます。(viewがListなどの場合は正確に動きます。)

これは仕様で動かそうと思うのならAPI関数などを使用するしかないのでしょうか。
大変申し訳ございませんがご教授の程宜しくお願い致します。
再現しました。
検証コードでの動きからするとバグという感じがします。

特に「ここに書いてある」などの返答が無ければフィードバッグされたらどうでしょうか。

MSDNフォーラム
http://forums.microsoft.com/MSDN-JA/default.aspx?SiteID=7
上記内のVisual Studio フィードバック
http://forums.microsoft.com/MSDN-JA/ShowForum.aspx?ForumID=183&SiteID=7

「検証コード」
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With ListView1
.Columns.Add("Item1")
For i As Integer = 0 To 26 Step 3
.Items.Add(i.ToString("00") & StrDup(3, Chr(Asc("A") + i)))
Next
End With
End Sub
Private InsertCount As Integer = 0
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
InsertCount += 1
ListView1.Items.Insert(0, "Inserted " & InsertCount.ToString)
End Sub
Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
If ListView1.View = View.LargeIcon Then
ListView1.View = View.Details
Else
ListView1.View = View.LargeIcon
End If
End Sub
End Class
「検証手順」
1.Button1でInsert → 見た目最後に追加される
2.Button2でViewをDetailsに変更 → 期待通りの並び順で表示される
3.Button3でViewをLargeIconに変更 → 期待通りの並び順で表示される

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