C# listvewでクリックしたときのイベントの順番

リストビューをマウスクリックで選択したときに処理をする機能を作成した際に、イベントの順番を確認してみました。

こんな感じのリストビューを作成します。

先頭の「test01」をクリックします。

実行結果
————————————————–
MouseDown
ItemSelectionChanged; selected=True
SelectedIndexChanged
Click
MouseClick
MouseUpMouseUp
————————————————–

Clickしてから選択を変えているイメージなのですが、ClickイベントとMouseClickはItemSelectionChangedとSelectedIndexChangedの後ろにきています。

次は、「test01」を選択した後に、「test02」を選択します。

実行結果
————————————————–
MouseDown
ItemSelectionChanged; selected=False
SelectedIndexChanged
ItemSelectionChanged; selected=True
SelectedIndexChanged
Click
MouseClick
MouseUp
————————————————–

「test01」の選択が解除されてから「test02」が選択されます。

今度は、「test02」の選択状態からアイテムが何もない白いところをクリックして選択解除します。

実行結果
————————————————–
MouseDown
ItemSelectionChanged; selected=False
SelectedIndexChanged
MouseUp
————————————————–

Clickはあくまでアイテムが選択されたときにしか走りません。

何も選択していない状態から、「test01」をダブルクリックします。

実行結果
————————————————–
MouseDown
ItemSelectionChanged; selected=True
SelectedIndexChanged
Click
MouseClick
MouseUp
MouseDown
ItemActivate
MouseUp
————————————————–

ダブルクリックすると、ItemActivateが走ります。

コメント