質問編集履歴
4
さらに改善した
title
CHANGED
File without changes
|
body
CHANGED
@@ -185,4 +185,10 @@
|
|
185
185
|
追記3 1月10日22時06分
|
186
186
|
YAmaGNZ様がe.Item.Selectedの事を教えてくださり試してみた所うまく動作しました。
|
187
187
|
**If (e.Item.Selected And ListViewItemStates.Selected) <> 0 Then**
|
188
|
-
ありがとうございました。
|
188
|
+
ありがとうございました。
|
189
|
+
|
190
|
+
---
|
191
|
+
追記4 1月10日22時29分
|
192
|
+
YAmaGNZ様のご指摘があり正しいのは
|
193
|
+
**If e.Item.Selected Then**
|
194
|
+
だとの事です。それと「選択されている」と判断するのであればFocusedやItemIndexではなく、Selectedを使用すべきとの事です。
|
3
さらに改善出来た
title
CHANGED
File without changes
|
body
CHANGED
@@ -179,4 +179,10 @@
|
|
179
179
|
**If (e.State And ListViewItemStates.Focused) <> 0 Then**
|
180
180
|
あるいは
|
181
181
|
**If e.ItemIndex = index Then**
|
182
|
-
にすることでうまい具合に動作するようになりました。
|
182
|
+
にすることでうまい具合に動作するようになりました。
|
183
|
+
|
184
|
+
---
|
185
|
+
追記3 1月10日22時06分
|
186
|
+
YAmaGNZ様がe.Item.Selectedの事を教えてくださり試してみた所うまく動作しました。
|
187
|
+
**If (e.Item.Selected And ListViewItemStates.Selected) <> 0 Then**
|
188
|
+
ありがとうございました。
|
2
改善した方法
title
CHANGED
File without changes
|
body
CHANGED
@@ -168,4 +168,15 @@
|
|
168
168
|
End Sub
|
169
169
|
```
|
170
170
|
|
171
|
-
再質問で申し訳ないのですがよろしくお願いいたします。
|
171
|
+
再質問で申し訳ないのですがよろしくお願いいたします。
|
172
|
+
|
173
|
+
---
|
174
|
+
追記2 1月10日21時43分
|
175
|
+
**Debug.WriteLine(e.State)**
|
176
|
+
で`e.State`の状態を調べた所、全部の項目が選択状態になっていました。なので全部赤色になってたわけです。なぜ`selected`になっているのかは分かりません。`selected`の代わりに`focus`で試してみた所`focus`は一つの項目だけ設定されてたので一つの項目だけが赤色になるようにできました。
|
177
|
+
**If (e.State And ListViewItemStates.Selected) <> 0 Then**
|
178
|
+
を
|
179
|
+
**If (e.State And ListViewItemStates.Focused) <> 0 Then**
|
180
|
+
あるいは
|
181
|
+
**If e.ItemIndex = index Then**
|
182
|
+
にすることでうまい具合に動作するようになりました。
|
1
再質問の為
title
CHANGED
File without changes
|
body
CHANGED
@@ -117,4 +117,55 @@
|
|
117
117
|
|
118
118
|
ListView1_DrawItemが呼び出されたときに、それがスクロール処理や一番最初のサムネイル作成以外で呼び出された事が分かれば処理を抜けるようにすれば上書きを防ぐことが出来るのではないかと思いますが、どういうイベントによって呼び出されたのかを知る方法が分かりません。
|
119
119
|
|
120
|
-
ListViewの選択された項目を選択状態の時の薄い青色の状態か、項目の背景色を目立つ色に変えたいのですが、どのようにすればいいでしょうか。
|
120
|
+
ListViewの選択された項目を選択状態の時の薄い青色の状態か、項目の背景色を目立つ色に変えたいのですが、どのようにすればいいでしょうか。
|
121
|
+
|
122
|
+
---
|
123
|
+
追記 1月10日20時19分
|
124
|
+
|
125
|
+
YAmaGNZ様が教えてくれたコードを
|
126
|
+
Dim imagerect As New Rectangle(New Point(e.Bounds.X + ((e.Bounds.Width - width1) / 2), e.Bounds.Y), New Size(width1, height1))
|
127
|
+
の直前に挿入したのですが、全部の項目が赤色になってしまいました。
|
128
|
+
また、Button2やButton3を押しても色が変わりません。(なんとなく該当の項目がちらついているようには見えます)
|
129
|
+
項目をマウスでクリックしても色が変わりません。予想では選択した項目だけ赤色でほかは無色になると思ってたのですが、そうはなっていないのでどこかがおかしいと思うのですがどこがおかしいのか分かりません。
|
130
|
+
プロパティの変更は
|
131
|
+
ListView1.MultiSelect = False
|
132
|
+
ぐらいしか変更してないと思います。コードの変更箇所だけ下に載せてみます
|
133
|
+
```VB
|
134
|
+
Private Sub ListView1_DrawItem(sender As Object, e As DrawListViewItemEventArgs) Handles ListView1.DrawItem
|
135
|
+
e.DrawDefault = False
|
136
|
+
e.DrawBackground()
|
137
|
+
|
138
|
+
If thumbnail(e.ItemIndex) Is Nothing Then
|
139
|
+
Dim original As Image
|
140
|
+
Try
|
141
|
+
original = Bitmap.FromFile(jpgFiles(e.ItemIndex))
|
142
|
+
Catch
|
143
|
+
original = My.Resources.Resource1._error
|
144
|
+
End Try
|
145
|
+
thumbnail(e.ItemIndex) = createThumbnail(original, Width, Height)
|
146
|
+
End If
|
147
|
+
|
148
|
+
'ここから追加-------------------------------------------------------
|
149
|
+
If (e.State And ListViewItemStates.Selected) <> 0 Then
|
150
|
+
'選択されているので選択色(例で赤とする)で塗りつぶす
|
151
|
+
e.Graphics.FillRectangle(Brushes.Red, e.Bounds)
|
152
|
+
Else
|
153
|
+
'選択されていないので通常色で塗りつぶす
|
154
|
+
Using b = New SolidBrush(e.Item.BackColor)
|
155
|
+
e.Graphics.FillRectangle(b, e.Bounds)
|
156
|
+
End Using
|
157
|
+
End If
|
158
|
+
'ここまで------------------------------------------------------------
|
159
|
+
|
160
|
+
Dim imagerect As New Rectangle(New Point(e.Bounds.X + ((e.Bounds.Width - width1) / 2), e.Bounds.Y), New Size(width1, height1))
|
161
|
+
e.Graphics.DrawImage(thumbnail(e.ItemIndex), imagerect)
|
162
|
+
'e.Item.ForeColor = Color.AliceBlue ' ←コメント状態を解除するとListView1が高速で点滅状態になる
|
163
|
+
'ListView1.Items(index).BackColor = Color.Aqua ' ←コメント状態を解除するとListView1が高速で点滅状態になる
|
164
|
+
|
165
|
+
e.DrawFocusRectangle()
|
166
|
+
'ListView1.Items(index).Focused = True '←コメントにしました
|
167
|
+
'ListView1.Items(index).Selected = True '←コメントにしました ' ←選択状態の時の青い色にならない
|
168
|
+
End Sub
|
169
|
+
```
|
170
|
+
|
171
|
+
再質問で申し訳ないのですがよろしくお願いいたします。
|