我正在写一个愚蠢的小程序(就像我们经常做的那样)来编写一些基本的C#代码。我相信你可以看到,鼠标被点击了,图片一直移动到鼠标被点击的地方。该位工作正常。然后我想让picturebox随机移动,这也是我管理的!我遇到的下一个问题是,当我单击时,picturebox继续随机移动,而不是移动到新的鼠标坐标。这方面的任何帮助都将不胜感激!以下是我认为问题所在的代码。
非常感谢!
约翰
protected override void OnMouseClick(MouseEventArgs e)
{
base.OnMouseClick(e);
int destX = e.X;
int destY = e.Y;
HasArrived = false;
while (HasArrived == false)
{
moveImage(destX, destY, pictureBox1);
if (pictureBox1.Left == destX && pictureBox1.Top == destY)
{
HasArrived = true;
while (HasArrived == true)
{
randomMove(pictureBox1);
hungry1 += 1;
}
}
}
}发布于 2012-11-22 19:13:42
你被困在你的内部循环中了!尝试将循环放在后台工作者中,这样您就可以识别新的鼠标单击,从而将HasArrived设置为true。
在肯定的while状态句中使用否定的while语句对我来说似乎非常糟糕,我以前从未见过这样的情况。我不认为这能行得通..
发布于 2012-11-22 19:05:13
这可能是因为HasArrived在任何地方都不会设置为false?但这也意味着你会被困在你的移动循环中。
编辑:如果你只想在移动到你点击的位置后随机移动一次,那么删除随机位周围的while,否则你需要一些其他的变量来知道何时中断while。
发布于 2012-11-22 19:11:24
您的内部循环似乎有问题。
HasArrived = true;
while (HasArrived == true)
{
randomMove(pictureBox1);
hungry1 += 1;
}除非randomMove()可以修改HasArrived,否则您的循环永远不会将HasArrived设置为false,因此while条件始终为真,并且您永远不会退出循环。
https://stackoverflow.com/questions/13510875
复制相似问题