如何在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.
}
}
}
}
所以我必须等待用户点击一个按钮,看看它是否是正确的。我环顾四周,它在谈论事件,但我不知道我需要做什么。如果你能告诉我如何做这件事,我会很感激的。
谢谢!
在设计器的属性窗口中,单击闪电图标。您将获得所选控件的事件列表。确保选择了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
等待用户输入,然后在用户完成单击后继续。