質問編集履歴

4

さらに改善した

2022/01/10 13:34

投稿

tada_tadaa
tada_tadaa

スコア111

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

さらに改善出来た

2022/01/10 13:34

投稿

tada_tadaa
tada_tadaa

スコア111

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

改善した方法

2022/01/10 13:08

投稿

tada_tadaa
tada_tadaa

スコア111

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

再質問の為

2022/01/10 12:56

投稿

tada_tadaa
tada_tadaa

スコア111

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
+ 再質問で申し訳ないのですがよろしくお願いいたします。