我试图阻止我的ListView
自动向下滚动/选择带有我按下的第一个字母的项目。
所以我试图覆盖它,但这对我不起作用。
public ref class ExtendedListView : public System::Windows::Forms::ListView
{
public:
ExtendedListView();
virtual void KeyPress(KeyEventArgs e) override
{
if (e.KeyCode == Keys::W || e.KeyCode == Keys::A || e.KeyCode == Keys::S || e.KeyCode == Keys::D)
{
MessageBox::Show("Test");
return;
}
}
};
(我添加MessageBox
来测试它是否有效)
答案 0 :(得分:3)
' KeyPress' listview中的更改之前触发事件(我用列表框累了) 诀窍是定义2个变量:
int selectedindex=0;
bool goBack=false;
private void listBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode==Keys.B)
{
selectedindex = listBox1.SelectedIndex;
goBack = true;
}
}
private void listBox1_SelectedIndexChanged_1(object sender, EventArgs e)
{
if (goBack)
{
listBox1.SelectedIndex = selectedindex;
goBack = false;
}
}
此示例可防止' B'关键的例子。 我希望这就是你的意思。
答案 1 :(得分:1)