Надо сделать так, чтобы нельзя было перемещаться по 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
вообще перестаёт ловить стрелки вверх
и вниз
. А они нужны.
AlexP
(Alex P.)
02.Декабрь.2021 07:25:42
#2
А зачем это?
Если для редактора клавиш, то я бы ловил нажатие нового сочетания в каком-нибудь отдельном окне (дабл кликнул на действие и окно открылось, при KeyDown
закрылось).
Это нифига не удобно
А что если вместо KeyDown
кинуть своё событие?
protected override bool IsInputKey(Keys keyData)
{
//делегат(this, keyData);
return false;
}
AlexP
(Alex P.)
02.Декабрь.2021 08:20:45
#4
BlackRain666:
Это нифига не удобно
Так много где сделано.
Отключать стандартные клавиши плохо для любителей управлять с клавиатуры и для незрячих.
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}");
}
Почему-то стрелки приходят один раз, а остальное два