gpt4 book ai didi

c# - 更换按钮位置

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:54 25 4
gpt4 key购买 nike

我的 c# winform 项目有问题。

在我的项目中,如果按钮位于同一区域,我有一个功能可以将按钮的位置切换到它们的旧位置。

private void myText_MouseUp(object sender, MouseEventArgs e) {

Point q = new Point(0, 0);
Point q2 = new Point(0, 0);
bool flag = false;
int r = 0;
foreach (Control p in this.Controls)
{
for (int i = 0; i < counter; i++)
{
if (flag)
{
if (p.Location.X == locationx[i] && p.Location.Y == locationy[i])
{
oldx = e.X;
oldy = e.Y;
flag = true;
r = i;
}
}
}
}
foreach (Control p in this.Controls)
{
for (int j = 0; j < counter; j++)
{
if ((locationx[j] == p.Location.X) && (locationy[j] == p.Location.Y))
{
Point arrr = new Point(oldx, oldy);
buttons[j].Location = arrr;
buttons[r].Location = new Point(locationx[j], locationy[j]);
}
}
}
}
The problem with this code is that if they are in the same area, the buttons do not switch their locations. Instead they goes to the last button location.

如果有人可以帮助我,那将对我有很大帮助:)

最佳答案

if语句总是计算为真。这意味着最后的 j循环将执行此操作:

// last time round the i loop, i == counter-1
// and q == new Point(locationx[counter-1], locationy[counter-1])
for (int j = 0; j < counter; j++)
{
Point q2 = new Point(locationx[j], locationy[j]);
buttons[i].Location = q2;
buttons[j].Location = q;
}

这样做的最终结果是每个按钮的 Location设置为 q , 这是

new Point(locationx[counter-1], locationy[counter-1])

为什么 if语句总是评估为 true .好吧,首先让我们看一下 or 中的几个。 if 中的条款声明:

|| ((q.Y >= q2.Y) && (q.X <= q2.X))
|| ((q.Y >= q2.Y) && (q.X == q2.X))

这相当于

|| ((q.Y >= q2.Y) && (q.X <= q2.X))

包含 == 的行测试对条件的最终结果完全没有影响。事实上所有包含 == 的行可以类似对待。这留下了:

|| ((q.Y >= q2.Y) && (q.X <= q2.X))
|| ((q.Y >= q2.Y) && (q.X >= q2.X))
|| ((q.Y <= q2.Y) && (q.X >= q2.X))
|| ((q.Y <= q2.Y) && (q.X <= q2.X))

我们可以压缩

|| ((q.Y >= q2.Y) && (q.X <= q2.X))
|| ((q.Y >= q2.Y) && (q.X >= q2.X))

进入

|| ((q.Y >= q2.Y)

和类似的

|| ((q.Y <= q2.Y) && (q.X >= q2.X))
|| ((q.Y <= q2.Y) && (q.X <= q2.X))

相同
|| ((q.Y <= q2.Y)

合并

|| ((q.Y >= q2.Y)
|| ((q.Y <= q2.Y)

你可以看到 if条件总是评估为 true .

关于c# - 更换按钮位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10663481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com