我面对一个简单的问题,但让我感到困惑。
一些代码如下:
代码1
private void Main_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Left)
{
label1.Location = new Point(label1.Location.X +10,label1.Location.Y + 10);
}
}
代码2
private void Main_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Left)
{
label1.Location = new Point(label1.Location.X +10,label1.Location.Y + 10);
button1.Location = new Point(button1.Location.X - 1,button1.Location.Y);
}
}
代码1工作正常,但是一旦我在表单中添加了一个按钮并移动了该位置的代码,我的" KEY.Left"不要给我任何回报(更新位置)......有人可以解释一下这个吗?
答案 0 :(得分:0)
假设这是关于Windows窗体的:
KeyPreview
属性设置为true
并处理表单的KeyUp
事件或
您可以在表单中覆盖ProcessCmdKey
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Left)
{
label1.Location = new Point(label1.Location.X + 10, label1.Location.Y + 10);
button1.Location = new Point(button1.Location.X - 1, button1.Location.Y);
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}