【C#】ListViewで移動禁止にしたい
結論
private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { if (e.IsSelected && (e.Item != selectedItem)) { if (isChanged) { e.Item.Selected = false; selectedItem.Selected = true; if (Counter) { Counter = false; MessageBox.Show("移動できません"); } else { Counter = true; } } else { selectedItem = e.Item; } } } private void listView1_MouseUp(object sender, MouseEventArgs e) { selectedItem.Selected = true; //これが無いと選択状態が消える }
動作
イベントハンドラで、選択されているアイテムが変更されるときに、選択されているアイテムがイベントハンドラを発生させていて、アイテムは異なるときに変更があったら選択を無効化して選択されたアイテムに戻しています。 このCounterというのは、選択を変更する一連の動作がItemSelectionChangedを2回呼ぶので、1回しかメッセージボックスを出さないように入れています。
MouseUpを入れておかないと、選択状態が消えます。listViewはほかの場所をクリックすると選択が消えますよね。