首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# -如何实时注册onMouseClick?

C# -如何实时注册onMouseClick?
EN

Stack Overflow用户
提问于 2012-11-22 18:39:22
回答 4查看 873关注 0票数 0

我正在写一个愚蠢的小程序(就像我们经常做的那样)来编写一些基本的C#代码。我相信你可以看到,鼠标被点击了,图片一直移动到鼠标被点击的地方。该位工作正常。然后我想让picturebox随机移动,这也是我管理的!我遇到的下一个问题是,当我单击时,picturebox继续随机移动,而不是移动到新的鼠标坐标。这方面的任何帮助都将不胜感激!以下是我认为问题所在的代码。

非常感谢!

约翰

代码语言:javascript
复制
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;
            }
        }
    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-22 19:13:42

你被困在你的内部循环中了!尝试将循环放在后台工作者中,这样您就可以识别新的鼠标单击,从而将HasArrived设置为true。

在肯定的while状态句中使用否定的while语句对我来说似乎非常糟糕,我以前从未见过这样的情况。我不认为这能行得通..

票数 1
EN

Stack Overflow用户

发布于 2012-11-22 19:05:13

这可能是因为HasArrived在任何地方都不会设置为false?但这也意味着你会被困在你的移动循环中。

编辑:如果你只想在移动到你点击的位置后随机移动一次,那么删除随机位周围的while,否则你需要一些其他的变量来知道何时中断while。

票数 0
EN

Stack Overflow用户

发布于 2012-11-22 19:11:24

您的内部循环似乎有问题。

代码语言:javascript
复制
        HasArrived = true;
        while (HasArrived == true)
        {
            randomMove(pictureBox1);
            hungry1 += 1;
        }

除非randomMove()可以修改HasArrived,否则您的循环永远不会将HasArrived设置为false,因此while条件始终为真,并且您永远不会退出循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13510875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档