仮想リストビューの質問です への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 UUQ  (社会人)
投稿日時
2013/5/5 20:25:32
>るきおさん
検証していただきありがとうございます。
自分でもVS2010expressをダウンロードしていろいろ試してみたのですが
結局同様のエラーが出てしまいました。
その後Googleで検索してみると同様の症状の質問がヒットしました
http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/61b2279e-66f3-4a8c-84eb-ed9318796d1f/
Google翻訳で内容を読んでみたところOS等の環境依存で出るバグのようです。
上記リンクにもるきおさんと同じWindows 7で同様の症状が出てる人も居るようなので(自分もWindows 7です)詳しい条件等は分からないのですが
とりあえず上記リンクにあるC#のコードをVBに変換して手直しした所Shift選択でのエラーはなくなりましたので解決と致します。
検証していただきありがとうございます。
自分でもVS2010expressをダウンロードしていろいろ試してみたのですが
結局同様のエラーが出てしまいました。
その後Googleで検索してみると同様の症状の質問がヒットしました
http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/61b2279e-66f3-4a8c-84eb-ed9318796d1f/
Google翻訳で内容を読んでみたところOS等の環境依存で出るバグのようです。
上記リンクにもるきおさんと同じWindows 7で同様の症状が出てる人も居るようなので(自分もWindows 7です)詳しい条件等は分からないのですが
とりあえず上記リンクにあるC#のコードをVBに変換して手直しした所Shift選択でのエラーはなくなりましたので解決と致します。
投稿者 るきお  (社会人)
投稿日時
2013/5/5 15:11:36
やってみましたが私のところではエラーにならず快適に実行できます。
11をクリックして、
Shift + → で 15 まで選択して、
Shift + ← で 11 まで戻す
ですよね?
EnableVisualStyleのこともよくわからないので勘も働かず
とりあえず書いてあるままで試しました。
環境はWindows 7 + VS2010 + .NET Framework 3.5 です。
デスクトップのデザインはクラシックとエアロ(?)の両方で試しましたが変わりませんでした。
11をクリックして、
Shift + → で 15 まで選択して、
Shift + ← で 11 まで戻す
ですよね?
EnableVisualStyleのこともよくわからないので勘も働かず
とりあえず書いてあるままで試しました。
環境はWindows 7 + VS2010 + .NET Framework 3.5 です。
デスクトップのデザインはクラシックとエアロ(?)の両方で試しましたが変わりませんでした。
投稿者 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
仮想リストビューの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
リンク先の情報だと.NET Frameworkのバグの可能性があるようですね。