1
private void p01_Click(object sender, EventArgs e)
    {
        if (p01.Image == pmiss.Image)
        {
            score++;
            makeMoleVisable(1, phit);
        }
        else
        {
            score--;
            molesmissed++;
        }
    }
    private void p02_Click(object sender, EventArgs e)
    {
        if (p02.Visible)
        {
            if (p02.Image == pmiss.Image)
            {
                score++;
                p02.Image = phit.Image;
            }
            else
            {
                score--;
                molesmissed++;
            }
        }
    }

こんにちは、これらのピクチャ ボックス クリック イベントが 36 あります。36 個の画像ボックスすべてに対して 1 つのクリック イベントのみを使用したいと考えています。さらに、すべてのクリック イベントは同じことを行いますが、最初のコードはわずかに異なります。タナクス

4

2 に答える 2

3

各画像のイベント プロパティに移動し、p02_Click独自のカスタム名を設定するか使用するだけです。

1 つのパネルにすべての画像ボックスがある場合は、次のことを試すことができます。

foreach (Control p in mypanel.ControlCollection)
{
    p = p as PictureBox;
    p.Click += (p01_Click);
}

Tagコードでプロパティを設定し、そのプロパティp01をチェックすることで、pictureBox1 かどうかをテストすることもできます。

于 2012-07-09T10:40:59.680 に答える
1

グループ画像ボックスごとに eventhandler メソッドを再利用できます。メソッドの送信側引数には、イベントを発生させたオブジェクトが含まれます。

于 2012-07-09T10:37:28.963 に答える