防止 ListView 在按键时显示 Scrolling/Selecting 个项目
Preventing ListView from Scrolling/Selecting Items when Pressing Keys
我试图阻止我的 ListView
自动滚动 down/selecting 带有我按下的第一个字母的项目。
所以我试图覆盖它,但这对我不起作用。
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
来测试它是否有效)
'KeyPress' 事件在列表视图更改之前触发(我厌倦了列表框)
诀窍是定义 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' 键。
我希望这就是你的意思。
只需使用 KeyEventArgs
中的 SuppressKeyPress
这应该会导致控件忽略此键。
我试图阻止我的 ListView
自动滚动 down/selecting 带有我按下的第一个字母的项目。
所以我试图覆盖它,但这对我不起作用。
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
来测试它是否有效)
'KeyPress' 事件在列表视图更改之前触发(我厌倦了列表框) 诀窍是定义 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' 键。 我希望这就是你的意思。
只需使用 KeyEventArgs
中的SuppressKeyPress
这应该会导致控件忽略此键。