回答編集履歴

3

追記

2021/06/30 07:35

投稿

退会済みユーザー
test CHANGED
@@ -17,3 +17,59 @@
17
17
 
18
18
 
19
19
  といった方法もあります。
20
+
21
+
22
+
23
+ ---
24
+
25
+
26
+
27
+ 質問のような状態になる原因が個人的に気になったので検証してみましたが、
28
+
29
+ 単純に項目領域外をクリックして選択解除されるだけの時のイベントは
30
+
31
+ 0. MouseDown
32
+
33
+ 0. ItemSelectionChanged (選択解除)
34
+
35
+
36
+
37
+ のように流れるので、このケースで再選択させるのはおそらく上手くいきます。
38
+
39
+ しかし、選択中の項目から別の項目を選択した場合のイベントは
40
+
41
+ 0. MouseDown
42
+
43
+ 0. ItemSelectionChanged (選択解除)
44
+
45
+ 0. ItemSelectionChanged (新しい項目を選択)
46
+
47
+
48
+
49
+ のように流れ、2に再選択処理を割り込ませると、既に選択解除した項目を選択し、更に新しい項目も選択しているような感じになり、ここで表示とプロパティの整合性が取れなくなり、動作がおかしくなっている感じがします。
50
+
51
+
52
+
53
+ 極力ウィンドウメッセージを殺さないようにするなら、
54
+
55
+ ```C#
56
+
57
+ private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
58
+
59
+ {
60
+
61
+ //何も選択されていなかったらスペースキーを送信して再選択
62
+
63
+ if (listView1.SelectedIndices.Count == 0)
64
+
65
+ {
66
+
67
+ SendKeys.Send(" ");
68
+
69
+ }
70
+
71
+ }
72
+
73
+ ```
74
+
75
+ シンプルにこんなのでもいいかもしれません。

2

修正

2021/06/30 07:34

投稿

退会済みユーザー
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  消極的な解決策としてば、
6
6
 
7
- 1. SelectedIndexChanged あたりで選択されていない状態を検出し、OKボタンEnabledを操作する
7
+ 1. SelectedIndexChanged あたりで選択されていない状態を検出し、OKボタンEnabledを操作する
8
8
 
9
9
  (一応エラーは出さなくて済む)
10
10
 

1

修正

2021/06/29 02:32

投稿

退会済みユーザー
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  消極的な解決策としてば、
6
6
 
7
- 1. SelectedIndexChanged あたりで選択されていない状態を検出し、OKボタンをEnable=Falseにする
7
+ 1. SelectedIndexChanged あたりで選択されていない状態を検出し、OKボタンをEnabledを操作する
8
8
 
9
9
  (一応エラーは出さなくて済む)
10
10