Запретить перемещение по `ListView` стрелками

Надо сделать так, чтобы нельзя было перемещаться по ListView стрелками.
По аналогии с предыдущими темами, сделал так:

using System.Windows.Forms;
using BrightIdeasSoftware;

namespace WindowsFormsApp3
{
    public class MyListView : TreeListView
    {

        protected override bool IsInputKey(Keys keyData)
        {
            return keyData != Keys.Down && keyData != Keys.Up;
        }

    }
}

форма:

        private void listView1_KeyDown(object sender, KeyEventArgs e)
        {
            System.Diagnostics.Debug.WriteLine(e.KeyCode);
        }

Работает. Но ListView вообще перестаёт ловить стрелки вверх и вниз. А они нужны.

А зачем это?
Если для редактора клавиш, то я бы ловил нажатие нового сочетания в каком-нибудь отдельном окне (дабл кликнул на действие и окно открылось, при KeyDown закрылось).

Это нифига не удобно :man_shrugging:
А что если вместо KeyDown кинуть своё событие? :thinking:


        protected override bool IsInputKey(Keys keyData)
        {
            //делегат(this, keyData);
            return false;
        }

Так много где сделано.

Отключать стандартные клавиши плохо для любителей управлять с клавиатуры и для незрячих.


        public delegate void KeyPressedCustomDelegate(object sender, Keys keys);
        public KeyPressedCustomDelegate KeyPressedCustom;


        protected override bool IsInputKey(Keys keyData)
        {
            KeyPressedCustom?.Invoke(this, keyData);
            return false;
        }

        private void Form2_Load(object sender, EventArgs e)
        {

            listViewKeyboard1.KeyPressedCustom += KeyPr;
        }

        private void KeyPr(object sender, Keys keys)
        {
            System.Diagnostics.Debug.WriteLine($"pr {keys}");
        }

Почему-то стрелки приходят один раз, а остальное два :thinking: