如何在c#中等待点击

本文关键字:等待 | 更新日期: 2023-09-27 17:50:31

我目前正在参加c#初学者课程。因为老师不在,我们连续错过了两节课。所以我们并没有真正意识到我们需要做什么。他让我去MSDN上看看,但这对我来说太复杂了。这是我的问题:

我必须创建一个"Simon说"程序。这是我当前的代码(抱歉法语变量):

public partial class Form1 : Form
{
    const byte LIMITE = 255;
    const byte LIMITEBOUTON = 5;
    byte[] _abyBouton = new byte[LIMITE];
    Random _rand = new Random();

    public Form1()
    {
        InitializeComponent();
    }
    //Blinks the Button. Works correctly.
    void AnimerBouton(Button btnBouton, Color Cocoleur)
    {
        btnBouton.BackColor = Color.Black;
        btnBouton.ForeColor = Color.White;
        Update();
        System.Threading.Thread.Sleep(500); // C'est inscrit en miliseconde
        btnBouton.BackColor = Cocoleur;
        btnBouton.ForeColor = Color.Black;
        Update();
        System.Threading.Thread.Sleep(500); // C'est inscrit en miliseconde
    }
    private void btnDémarrer_Click(object sender, EventArgs e)
    {
        //Creates an array with the 255 eventual moves.
        for (byte byIndex = 0; byIndex <= LIMITE - 1; byIndex++)
        {
            _abyBouton[byIndex] = (byte)_rand.Next(1, LIMITEBOUTON);
        }
        for (byte byIndex = 0; byIndex <= LIMITE - 1; byIndex++)
        {
            //Takes care of the current progress in the game.
            for (byte byIndex2 = 0; byIndex2 <= byIndex; byIndex2++)
            {
                switch (_abyBouton[byIndex2])
                {
                    case 1:
                        {
                            AnimerBouton(btn1, Color.Green);
                        }
                        break;
                    case 2:
                        {
                            AnimerBouton(btn2, Color.Red);
                        }
                        break;
                    case 3:
                        {
                            AnimerBouton(btn3, Color.Yellow);
                        }
                        break;
                    case 4:
                        {
                            AnimerBouton(btn4, Color.Cyan);
                        }
                        break;
                }
                //Wait to see if the click is correct. No idea how to do this.
            }
        }  
    }
}

所以我必须等待用户点击一个按钮,看看它是否是正确的。我环顾四周,它在谈论事件,但我不知道我需要做什么。如果你能告诉我如何做这件事,我会很感激的。

谢谢!

如何在c#中等待点击

在设计器的属性窗口中,单击闪电图标。您将获得所选控件的事件列表。确保选择了btnBouton控件,并在列表中找到Click事件。您应该在下拉列表中看到btnDemarrer_Click。选择它。现在,当按钮被单击时,它应该调用btnDemarrer_Click处理程序。

当您还没有编写处理程序时,您可以双击列表中的事件,它将自动为您生成方法框架。还可以双击控件本身以生成该控件的默认事件处理程序。(在按钮的情况下,我认为默认的事件是点击事件。)

如果您想要一个特定的方法等待某些工作完成,您可以查看AutoResetEvent。一个极其简化的示例可能会帮助您走上正确的轨道:

using System.Threading;
public static AutoResetEvent arEvent = new AutoResetEvent(false);
static void Main()
{
    DoWork();
    arEvent.WaitOne();  //WaitOne() "pauses" Main and waits for some work to be done.
    DoWork();
    arEvent.WaitOne();
}
static void DoWork();
{
    //Some work is done here.
    arEvent.Set(); //This lets Main() continue where it left off.
}

使用这个,您可以让btnDémarrer_Click等待用户输入,然后在用户完成单击后继续。