Left、Top:控件左上角相對**父容器客戶區**的 X、Y 座標。Width、Height:控件自身寬高。ClientRectangle.Width、ClientRectangle.Height。const int STEP = 10; // 每次移動像素
// 向上:Top 減小,最小 0
if (btn.Top > 0) btn.Top -= STEP;
// 向下:Top 增大,最大 = 容器高 - 控件高
if (btn.Top < this.ClientRectangle.Height - btn.Height) btn.Top += STEP;
// 向左:Left 減小,最小 0
if (btn.Left > 0) btn.Left -= STEP;
// 向右:Left 增大,最大 = 容器寬 - 控件寬
if (btn.Left < this.ClientRectangle.Width - btn.Width) btn.Left += STEP;
STEP 為**自定義移動步長**,可改為 5、20 或綁定 TrackBar 讓使用者調整。數值越大移動越快但越「跳躍」。
private void Form1_KeyDown(object sender, KeyEventArgs e) {
switch (e.KeyCode) {
case Keys.Up: MoveUp(); break;
case Keys.Down: MoveDown(); break;
case Keys.Left: MoveLeft(); break;
case Keys.Right: MoveRight(); break;
}
}
private void MoveUp() { if (btn.Top > 0) btn.Top -= 10; }
// ... 其他方向同理
記得設定表單 KeyPreview = true 以接收鍵盤事件。