Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
仮想リストビューの質問です
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=11252#CommentId25553
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
UUQ
 (社会人)
投稿日時
2013/5/4 22:50:05
ListViewに画像を表示させるプログラムを作成中なのですがどうしても解決方法が分からないエラーが出てしまうので質問させてください
仮想リストビューのLargeIcon,SmallIcon時にShiftキーを押しながら(マウスによる選択ではエラーは出ません)アイテムを複数選択した時に
起点のアイテムを通過するとエラーが出てしまいます。
(「Argumentexception startIndex 値に endIndex 値より大きい値を指定することはできません。」となってしまいます。(LargeIcon,SmallIcon以外の場合はエラーが出ません))
XP Visualスタイルを解除するとエラーは出なくなるのですが解除はしたくありません。
なのでVisualスタイルのままでこの問題を解決する方法が知りたいです。よろしくお願いします。
環境はVS2008でフレームワークは.netframework3.5を使用しております
下記はエラーを再現させるコードです。
Imports System.Windows.Forms
Public Class TEST
Inherits System.Windows.Forms.Form
Private components As System.ComponentModel.IContainer
Public Sub New()
Me.components = New System.ComponentModel.Container
Me.ListView1 = New System.Windows.Forms.ListView
Me.ImageList1 = New System.Windows.Forms.ImageList(Me.components)
Me.SuspendLayout()
'
'ListView1
'
Me.ListView1.Location = New System.Drawing.Point(15, 10)
Me.ListView1.Name = "ListView1"
Me.ListView1.Size = New System.Drawing.Size(600, 400)
Me.ListView1.SmallImageList = Me.ImageList1
Me.ListView1.TabIndex = 0
Me.ListView1.UseCompatibleStateImageBehavior = False
Me.ListView1.VirtualMode = True
Me.ListView1.VirtualListSize = 20
'
'ImageList1
'
Me.ImageList1.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit
Me.ImageList1.ImageSize = New System.Drawing.Size(16, 16)
Me.ImageList1.TransparentColor = System.Drawing.Color.Transparent
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(630, 420)
Me.Controls.Add(Me.ListView1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
Private Sub ListView1_RetrieveVirtualItem(ByVal sender As Object, ByVal e As System.Windows.Forms.RetrieveVirtualItemEventArgs) Handles ListView1.RetrieveVirtualItem
e.Item = New ListViewItem(e.ItemIndex.ToString)
End Sub
Friend WithEvents ListView1 As System.Windows.Forms.ListView
Friend WithEvents ImageList1 As System.Windows.Forms.ImageList
End Class
Module Program
<STAThread()> _
Sub Main()
Dim _TEST_ As New TEST
'XP Visualスタイルを有効にした状態でShiftを押しながらListViewItemを選択した場合に起点のアイテムを通過するときに
'startIndex 値に endIndex 値より大きい値を指定することはできません。となってしまう
'LargeIcon,SmallIconの時のみ↑のエラーが出てしまう。
' __
' |11| 12 13 14 15 (11にフォーカスがある状態)
'  ̄
' →
' ________
' |11 12 13 14 15| (Shiftを押しながら15まで選択)
'  ̄ ̄ ̄ ̄ ̄ ̄
'
' ____ ←
' |11 12| 13 14 15 (上の状態からShiftを押したまま11まで戻るとエラーが発生する)
'  ̄ ̄
'
'
Application.EnableVisualStyles() '##この行をコメントアウトするとエラーにならない
Application.Run(_TEST_)
End Sub
End Module