我在这样的控制覆盖ProcessCmdKey
:按下右箭头使向上箭头被设置
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
if ((keyData & Keys.Up) == Keys.Up)
MessageBox.Show("Up arrow");
else if ((keyData & Keys.Right) == Keys.Right)
MessageBox.Show("Right arrow");
// it doesn't matter what I return, the glitch happens anyway
return base.ProcessCmdKey(ref msg, keyData);
}
当我按下向上箭头键,将出现消息Up arrow
,但它也出现当我按下右箭头键。为什么是这样?
我真的不知道,但你不会使用'((Keys)keyData)== Keys.Up)'? – Ben
@mazzzzz我现在这样做(不知道它为什么会工作,因为它如何等于'Keys.Right'还有'(&Keys.Up)== Keys.Up'?)但我希望它做当按住Shift键时不需要再次在单独的if中写入条件。 –
不是OT,但只是在你的事件处理器上设置断点并检查它。 –