我的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;
}
}
}
}
}
答案 0 :(得分:1)
尝试使用按钮事件来按下它来调用函数,而不是创建自己的函数。
答案 1 :(得分:0)
如果第二个功能不是包含按钮的控件或表单的一部分,则无法访问按钮数组或locationx和locationy。您可能需要将这些值作为参数传递给函数,或者确保它们是作为包含第二个函数的类的成员提供的。请注意,通常实用程序函数不会接受“sender”和“MouseEventArgs” - 仅传递实用程序函数执行其工作所需的特定数据。