改变地方功能

时间:2012-05-29 17:03:24

标签: c# winforms

我的C#WinForms项目有问题。我有一个功能,如果他们互相接触,应该改变按钮的位置。例如,如果btn1 oldloction = (4,2)btn2 oldlocaction (2,6) bt1 new location = (2,6),那么如果我移动按钮,它们会触及bt2 new location = (4,2)和{{1} }} 现在我用2个按钮做到了,它有效。

locationx - means the x  location on the button and its orgenize firat place of the location feat to the first buttons[0], the second feat to locationx[1] = buttons[1].location.x;
location - works the same ass locationx but uts the y locaion. 

    private void myText_MouseUp(object sender, MouseEventArgs e)
    {
       Point oldlocation = new Point(locationx[0], locationy[0]);
       Point oldlocation2 = new Point(locationx[1], locationy[1]);
       if (buttons[0].Location.Y == buttons[1].Location.Y)
       {
           buttons[1].Location = oldlocation;
           buttons[0].Location = oldlocation2;
       }
    }

当我试图将其作为一个全局函数时,它不起作用,我不知道为什么。

这是全局函数的代码不起作用:

  private void myText_MouseUp(object sender, MouseEventArgs e)
    {

        for (int i = 0; i < counter; i++)
        {
            Point oldlocation = new Point(locationx[i], locationy[i]);
            for (int j = 0; j < counter; j++)
            {
                if (i != j)
                {
                    Point oldlocation2 = new Point(locationx[j], locationy[j]);
                    if (buttons[i].Location.Y != buttons[j].Location.Y)
                    {
                        buttons[j].Location = oldlocation2;
                        buttons[i].Location = oldlocation;
                    }
                    else if (buttons[i].Location.Y == buttons[j].Location.Y)
                    {
                        buttons[j].Location = oldlocation;
                        buttons[i].Location = oldlocation2;
                    }
                }

            }
        }
    }

2 个答案:

答案 0 :(得分:1)

尝试使用按钮事件来按下它来调用函数,而不是创建自己的函数。

答案 1 :(得分:0)

如果第二个功能不是包含按钮的控件或表单的一部分,则无法访问按钮数组或locationx和locationy。您可能需要将这些值作为参数传递给函数,或者确保它们是作为包含第二个函数的类的成员提供的。请注意,通常实用程序函数不会接受“sender”和“MouseEventArgs” - 仅传递实用程序函数执行其工作所需的特定数据。