C# 如何在c中等待单击#

C# 如何在c中等待单击#,c#,events,click,C#,Events,Click,我目前正在上c#的初级课程。因为老师不在,我们连续缺了两节课。所以我们没有看到我们需要做什么。他说去看MSDN,但这对我来说太复杂了。这就是我的问题: 我必须创建一个“西蒙说”的程序。这是我当前的代码(很抱歉使用了法语变量): 公共部分类表单1:表单 { 常量字节限制=255; 常量字节限制按钮=5; 字节[]_abyBouton=新字节[LIMITE]; 随机_rand=新随机(); 公共表格1() { 初始化组件(); } //闪烁按钮。工作正常。 无效动画按钮(按钮btnBouton,颜色

我目前正在上c#的初级课程。因为老师不在,我们连续缺了两节课。所以我们没有看到我们需要做什么。他说去看MSDN,但这对我来说太复杂了。这就是我的问题:

我必须创建一个“西蒙说”的程序。这是我当前的代码(很抱歉使用了法语变量):

公共部分类表单1:表单
{
常量字节限制=255;
常量字节限制按钮=5;
字节[]_abyBouton=新字节[LIMITE];
随机_rand=新随机();
公共表格1()
{
初始化组件();
}
//闪烁按钮。工作正常。
无效动画按钮(按钮btnBouton,颜色Cocoleur)
{
btnBouton.BackColor=Color.Black;
btnBouton.ForeColor=颜色.白色;
更新();
System.Threading.Thread.Sleep(500);//C'est inscrit en milisteconde
btnBouton.BackColor=Cocoleur;
btnBouton.ForeColor=颜色.黑色;
更新();
System.Threading.Thread.Sleep(500);//C'est inscrit en milisteconde
}
私有void btnDémarler_单击(对象发送者,事件参数e)
{
//创建一个包含255个最终移动的数组。

对于(byte byIndex=0;byIndex在设计器的“属性”窗口上,单击闪电图标。您将获得所选控件的事件列表。确保选中了
btnBouton
控件,并在列表中找到
click
事件。您应该在下拉列表中看到
BTNDEMARER\u click
。选择它。现在,当单击按钮时,它应该调用您的
btnDemarrer\u Click
处理程序


如果尚未编写处理程序,可以双击列表中的事件,它将自动为您生成方法框架。还可以双击控件本身,为该控件生成默认事件处理程序。(对于按钮,我认为默认事件是click事件。)

如果您希望某个特定的方法等待某些工作完成,您可以研究。一个极其简化的示例可能会帮助您走上正确的道路:

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émarer_单击
等待用户输入,然后在用户单击后继续。

不确定这如何适用于所问的问题,也不确定它是否有任何意义。
DoWork
与调用
WaitOne
@AndrewBarber问题a的线程相同sks如何等待特定事件(即,单击按钮)发生。他代码底部的注释行是他希望等待用户输入的地方。我假设在收到输入后,
btnDémarler_单击
将继续并根据正确答案检查输入。例如,为了让用户理解这一点,它被极度简化了。:)OP可能在不订阅事件的情况下手动创建了处理程序。
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.
}