我为KeyPreview = true;
设置了Form
。我基本上想要使用箭头键转到下一个和上一个图像,而不是将焦点更改为不同的控件。我已将Handled
属性设置为true
,但仍然按箭头键按下更改焦点。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete)
{
// Do stuff
}
else if (e.KeyCode == Keys.Left)
{
// Do stuff
e.Handled = true;
}
else if (e.KeyCode == Keys.Right)
{
// Do stuff
e.Handled = true;
}
}
编辑
我想要实现的行为如下。
Left Arrow Key -> Previous Image
Right Arrow Key -> Next Image
现在,我的TextBox
上还有一些Form
es因此我不希望转到下一张和之前的图片,如果那些Textbox
是焦点,因为它应该在文本中导航。
答案 0 :(得分:1)
这对我有用。
KeyPreview = true;
设置Form
。覆盖ProcessCmdKey
并根据需要处理TextBox
es中没有任何焦点。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (textBox1.ContainsFocus || textBox2.ContainsFocus || textBox3.ContainsFocus)
{
return base.ProcessCmdKey(ref msg, keyData);
}
if (keyData == Keys.Delete)
{
removeRect();
return true;
}
else if (keyData == Keys.Left)
{
previousImg();
return true;
}
else if (keyData == Keys.Right)
{
nextImg();
return true;
}
else
{
return base.ProcessCmdKey(ref msg, keyData);
}
}