C# 点击事件未设置布尔值

C# 点击事件未设置布尔值,c#,.net,visual-studio,C#,.net,Visual Studio,我用c#编写了一个简单的类,在表单的顶部、右侧和左侧角落添加了两个面板 如果单击正确的组合,则会调用一个事件。用户有5秒钟的时间来执行正确的组合,否则将无法工作。组合是“右,左,右” 但有一件有趣的事。如果我点击右,左,左,右它的工作。由于某些原因,通过PanelTopLeft_Click,它确实会将两个布尔值设置为false,但是当调用PanelTopRight_Click时,两个布尔值仍然为true。您以多快的速度单击左一个布尔值两次?它是否会将您的第二次单击视为双击事件,因此不会触发上述任

我用c#编写了一个简单的类,在表单的顶部、右侧和左侧角落添加了两个面板

如果单击正确的组合,则会调用一个事件。用户有5秒钟的时间来执行正确的组合,否则将无法工作。组合是“右,左,右”


但有一件有趣的事。如果我点击右,左,左,右它的工作。由于某些原因,通过PanelTopLeft_Click,它确实会将两个布尔值设置为false,但是当调用PanelTopRight_Click时,两个布尔值仍然为true。

您以多快的速度单击左一个布尔值两次?它是否会将您的第二次单击视为双击事件,因此不会触发上述任何代码(实际上会忽略它)?(同样,在你的例子中,如果
konamiCodeStage2
be
secretCodeStage2
,当你在这里添加问题时,这似乎是一个复制/粘贴/编辑问题)我刚刚测试过,如果我快速点击两次,它不起作用(bools不设置),如果我等待1-2秒,第二次点击它就起作用。但奇怪的是,重置事件被调用。。我在那里设置了一个断点,两个bool都设置为false。编辑:是的,这是一个编辑问题,已修复。谢谢。您可以考虑用Debug .WrreWe()语句跟踪代码流,以查看哪些事件以什么顺序被触发,以及您的布尔变量具有什么值。另外,当您放置断点重置时,您可以检查调用堆栈以查看谁在调用重置(计时器或您的事件处理程序…)我认为@JamesThorpe发现了问题,如果我双击,单击事件将首先被调用,然后第二次单击调用双击事件。。。请继续添加答复,以便我可以接受。我将为双击添加一个事件,并对其调用Reset()。
    bool secretCodeStage1;
    bool secretCodeStage2;
        private void TimerReset_Tick(object sender, EventArgs e)
    {
        Reset();
    }

    private void PanelTopLeft_Click(object sender, EventArgs e)
    {
        if (secretCodeStage1 && !secretCodeStage2)
        {
            secretCodeStage2 = true;
        }
        else
        {
            Reset();
        }
    }

    private void PanelTopRight_Click(object sender, EventArgs e)
    {
        if (secretCodeStage2)
        {
            SecretCodeActivated(this, new EventArgs());

            Reset();
        }
        else
        {
            timerReset.Start();
            secretCodeStage1 = true;
        }
    }
    private void Reset()
    {
        secretCodeStage1 = false;
        secretCodeStage2 = false;

        timerReset.Stop();
    }