質問編集履歴
4
さらに改善した
test
CHANGED
File without changes
|
test
CHANGED
@@ -373,3 +373,15 @@
|
|
373
373
|
**If (e.Item.Selected And ListViewItemStates.Selected) <> 0 Then**
|
374
374
|
|
375
375
|
ありがとうございました。
|
376
|
+
|
377
|
+
|
378
|
+
|
379
|
+
---
|
380
|
+
|
381
|
+
追記4 1月10日22時29分
|
382
|
+
|
383
|
+
YAmaGNZ様のご指摘があり正しいのは
|
384
|
+
|
385
|
+
**If e.Item.Selected Then**
|
386
|
+
|
387
|
+
だとの事です。それと「選択されている」と判断するのであればFocusedやItemIndexではなく、Selectedを使用すべきとの事です。
|
3
さらに改善出来た
test
CHANGED
File without changes
|
test
CHANGED
@@ -361,3 +361,15 @@
|
|
361
361
|
**If e.ItemIndex = index Then**
|
362
362
|
|
363
363
|
にすることでうまい具合に動作するようになりました。
|
364
|
+
|
365
|
+
|
366
|
+
|
367
|
+
---
|
368
|
+
|
369
|
+
追記3 1月10日22時06分
|
370
|
+
|
371
|
+
YAmaGNZ様がe.Item.Selectedの事を教えてくださり試してみた所うまく動作しました。
|
372
|
+
|
373
|
+
**If (e.Item.Selected And ListViewItemStates.Selected) <> 0 Then**
|
374
|
+
|
375
|
+
ありがとうございました。
|
2
改善した方法
test
CHANGED
File without changes
|
test
CHANGED
@@ -339,3 +339,25 @@
|
|
339
339
|
|
340
340
|
|
341
341
|
再質問で申し訳ないのですがよろしくお願いいたします。
|
342
|
+
|
343
|
+
|
344
|
+
|
345
|
+
---
|
346
|
+
|
347
|
+
追記2 1月10日21時43分
|
348
|
+
|
349
|
+
**Debug.WriteLine(e.State)**
|
350
|
+
|
351
|
+
で`e.State`の状態を調べた所、全部の項目が選択状態になっていました。なので全部赤色になってたわけです。なぜ`selected`になっているのかは分かりません。`selected`の代わりに`focus`で試してみた所`focus`は一つの項目だけ設定されてたので一つの項目だけが赤色になるようにできました。
|
352
|
+
|
353
|
+
**If (e.State And ListViewItemStates.Selected) <> 0 Then**
|
354
|
+
|
355
|
+
を
|
356
|
+
|
357
|
+
**If (e.State And ListViewItemStates.Focused) <> 0 Then**
|
358
|
+
|
359
|
+
あるいは
|
360
|
+
|
361
|
+
**If e.ItemIndex = index Then**
|
362
|
+
|
363
|
+
にすることでうまい具合に動作するようになりました。
|
1
再質問の為
test
CHANGED
File without changes
|
test
CHANGED
@@ -237,3 +237,105 @@
|
|
237
237
|
|
238
238
|
|
239
239
|
ListViewの選択された項目を選択状態の時の薄い青色の状態か、項目の背景色を目立つ色に変えたいのですが、どのようにすればいいでしょうか。
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
---
|
244
|
+
|
245
|
+
追記 1月10日20時19分
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
YAmaGNZ様が教えてくれたコードを
|
250
|
+
|
251
|
+
Dim imagerect As New Rectangle(New Point(e.Bounds.X + ((e.Bounds.Width - width1) / 2), e.Bounds.Y), New Size(width1, height1))
|
252
|
+
|
253
|
+
の直前に挿入したのですが、全部の項目が赤色になってしまいました。
|
254
|
+
|
255
|
+
また、Button2やButton3を押しても色が変わりません。(なんとなく該当の項目がちらついているようには見えます)
|
256
|
+
|
257
|
+
項目をマウスでクリックしても色が変わりません。予想では選択した項目だけ赤色でほかは無色になると思ってたのですが、そうはなっていないのでどこかがおかしいと思うのですがどこがおかしいのか分かりません。
|
258
|
+
|
259
|
+
プロパティの変更は
|
260
|
+
|
261
|
+
ListView1.MultiSelect = False
|
262
|
+
|
263
|
+
ぐらいしか変更してないと思います。コードの変更箇所だけ下に載せてみます
|
264
|
+
|
265
|
+
```VB
|
266
|
+
|
267
|
+
Private Sub ListView1_DrawItem(sender As Object, e As DrawListViewItemEventArgs) Handles ListView1.DrawItem
|
268
|
+
|
269
|
+
e.DrawDefault = False
|
270
|
+
|
271
|
+
e.DrawBackground()
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
If thumbnail(e.ItemIndex) Is Nothing Then
|
276
|
+
|
277
|
+
Dim original As Image
|
278
|
+
|
279
|
+
Try
|
280
|
+
|
281
|
+
original = Bitmap.FromFile(jpgFiles(e.ItemIndex))
|
282
|
+
|
283
|
+
Catch
|
284
|
+
|
285
|
+
original = My.Resources.Resource1._error
|
286
|
+
|
287
|
+
End Try
|
288
|
+
|
289
|
+
thumbnail(e.ItemIndex) = createThumbnail(original, Width, Height)
|
290
|
+
|
291
|
+
End If
|
292
|
+
|
293
|
+
|
294
|
+
|
295
|
+
'ここから追加-------------------------------------------------------
|
296
|
+
|
297
|
+
If (e.State And ListViewItemStates.Selected) <> 0 Then
|
298
|
+
|
299
|
+
'選択されているので選択色(例で赤とする)で塗りつぶす
|
300
|
+
|
301
|
+
e.Graphics.FillRectangle(Brushes.Red, e.Bounds)
|
302
|
+
|
303
|
+
Else
|
304
|
+
|
305
|
+
'選択されていないので通常色で塗りつぶす
|
306
|
+
|
307
|
+
Using b = New SolidBrush(e.Item.BackColor)
|
308
|
+
|
309
|
+
e.Graphics.FillRectangle(b, e.Bounds)
|
310
|
+
|
311
|
+
End Using
|
312
|
+
|
313
|
+
End If
|
314
|
+
|
315
|
+
'ここまで------------------------------------------------------------
|
316
|
+
|
317
|
+
|
318
|
+
|
319
|
+
Dim imagerect As New Rectangle(New Point(e.Bounds.X + ((e.Bounds.Width - width1) / 2), e.Bounds.Y), New Size(width1, height1))
|
320
|
+
|
321
|
+
e.Graphics.DrawImage(thumbnail(e.ItemIndex), imagerect)
|
322
|
+
|
323
|
+
'e.Item.ForeColor = Color.AliceBlue ' ←コメント状態を解除するとListView1が高速で点滅状態になる
|
324
|
+
|
325
|
+
'ListView1.Items(index).BackColor = Color.Aqua ' ←コメント状態を解除するとListView1が高速で点滅状態になる
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
e.DrawFocusRectangle()
|
330
|
+
|
331
|
+
'ListView1.Items(index).Focused = True '←コメントにしました
|
332
|
+
|
333
|
+
'ListView1.Items(index).Selected = True '←コメントにしました ' ←選択状態の時の青い色にならない
|
334
|
+
|
335
|
+
End Sub
|
336
|
+
|
337
|
+
```
|
338
|
+
|
339
|
+
|
340
|
+
|
341
|
+
再質問で申し訳ないのですがよろしくお願いいたします。
|