C# c中组件和窗体的碰撞边

C# c中组件和窗体的碰撞边,c#,winforms,C#,Winforms,我想做一个简单的奥秘。错误地陈述了我无法抓住左侧起重机按钮左边缘撞击屏幕的瞬间的问题 private void button1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.A) { if (ActiveForm.Left - button1.Left<10) { button1.Left -= 10;

我想做一个简单的奥秘。错误地陈述了我无法抓住左侧起重机按钮左边缘撞击屏幕的瞬间的问题

private void button1_KeyDown(object sender, KeyEventArgs e)          
{
    if (e.KeyData == Keys.A)
    {
        if (ActiveForm.Left - button1.Left<10)
        {
            button1.Left -= 10;
        }

    }
    if (e.KeyData == Keys.D)
    {
         button1.Left += 10;
    }                
}

我想问题出在你对按钮1.左代码的假设上

我假设ActiveForm是显示游戏本身的窗体,您希望将您的条向左移动,直到它碰到ActiveForm的左侧

请看这张图片,基本上是表单。Left是屏幕左侧与表单本身之间的距离:


不要用表单来检查条的位置。Left,用0-bar.width来检查它,表单的左侧始终为0,因此您可以将条向左移动,只要它的值大于我认为大于10的条的宽度。

在您当前的代码中,看起来你甚至没有试图抓住那一刻-至少没有做任何花哨的事情,屏幕的左边缘,父控件的X坐标为0,所以你应该只比较一下你的按钮1。向左。不太向右,不起作用。我将有同样的球我应该从形式的边缘开始。这些坐标也需要比较。我也只比较了屏幕本身。