0

我的 C# WinForms 项目有问题。我有一个功能,如果它们相互接触,应该改变按钮的位置。例如,如果我有btn1atoldloction = (4,2)btn2at oldlocaction (2,6),那么如果我移动按钮并且它们会触摸bt1 new location = (2,6)bt2 new location = (4,2) 现在我用 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;
                    }
                }

            }
        }
    }
4

2 回答 2

1

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

于 2012-05-29T17:07:54.837 回答
0

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

于 2012-05-29T17:13:10.393 回答