2

現在、C#で初心者向けのクラスを受講しています。先生がいられなかったので、2回連続で欠席しました。そのため、これを行うために何が必要かは実際にはわかりませんでした。彼はMSDNで見に行くと言ったが、それは通常私にはあまりにも複雑すぎる。だからここに私の問題があります:

「SimonSays」プログラムを作成する必要があります。これが私の現在のコードです(フランス語の変数については申し訳ありません):

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.
            }
        }  
    }
}

したがって、ユーザーがボタンをクリックして、それが正しいボタンであるかどうかを確認するのを待つ必要があります。周りを見回してイベントの話をしていましたが、何をすればいいのかわかりませんでした。これを行う方法について助けていただければ幸いです。

ありがとう!

4

2 に答える 2

9

デザイナのプロパティウィンドウで、稲妻アイコンをクリックします。選択したコントロールのイベントのリストが表示されます。btnBoutonコントロールが選択されていることを確認Clickし、リストでイベントを見つけます。btnDemarrer_Clickドロップダウンリストに表示されます。それを選択します。btnDemarrer_Clickこれで、ボタンがクリックされると、ハンドラーが呼び出されます。

ハンドラーをまだ作成していない場合は、リスト内のイベントをダブルクリックすると、メソッドスケルトンが自動的に生成されます。コントロール自体をダブルクリックして、そのコントロールのデフォルトのイベントハンドラーを生成することもできます。(ボタンの場合、デフォルトのイベントはクリックイベントだと思います。)

于 2013-01-03T21:29:19.127 に答える
-2

いくつかの作業が完了するまで特定のメソッドを待機させたい場合は、を調べることができます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これを使用すると、ユーザー入力を待ってから、ユーザーがクリックした後に続行することができます。

于 2013-01-03T21:57:38.087 に答える