【C#】リストビューをCtrlやShiftキー押しながらクリックするとチェックボックスに勝手にチェックが入る現象の対策

C#

前提条件

リストビューを以下の設定で使用する。

  • チェックボックスあり(CheckBoxes = true)
  • FullRowSelect = true
  • MultiSelect = true

困りごと

Ctrlキー または Shiftキー を押下しながらマウスで複数行を選択すると、勝手にチェックボックスがONされてしまう。

対応方法

ItemCheckイベントに以下の処理を記述します。

private void listView1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    // ShiftまたはCtrl押下時はチェック状態を変化させない
    if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift ||
        (Control.ModifierKeys & Keys.Control) == Keys.Control)
    {
        e.NewValue = e.CurrentValue;
    }
}
タイトルとURLをコピーしました