-1

このコードは、このシーケンスでラベルを生成するのに役立ちます。

A1 A2 A3 A4 A5
B1 B2 B3 B4 B5
C1 C2 C3 C4 C5
D1 D2 D3 D4 D5

しかし、今私が欲しいのは、ラベルをクリックできることです。すべてのラベルには独自の ID があり、チェックするメソッドを呼び出して自由に使用できます。
だから私は太字部分を自動生成させる必要があります

vartable[namelabel].Click += new System.EventHandler(**vartable[namelabel]_Click**);

namelabel は、名前または

Private void lbl11_Click

私に何ができる?

private void button1_Click(object sender, EventArgs e)
    {

        for (int i = 1; i <= 9; i++)
        {
            for (int q = 1; q <= 9; q++)
            {
                string lettle="a";
                if(i==1)
                {
                    lettle="A";
                }
                else if(i==2)
                {
                    lettle="B";
                }
                else if (i == 3)
                {
                    lettle = "C";
                }
                else if (i == 4)
                {
                    lettle = "D";
                }
                else if (i == 5)
                {
                    lettle = "E";
                }
                else if (i == 6)
                {
                    lettle = "F";
                }
                else if (i == 7)
                {
                    lettle = "G";
                }
                else if (i == 8)
                {
                    lettle = "H";
                }
                else if (i == 9)
                {
                    lettle = "I";
                }

                string labeltext = lettle + q;
                int y = (100 + (q * 20));
                int x = (100 + (i * 20));
                string namelabel = "lbl" + i + q;
                var method = namelabel;
                   var vartable = new Dictionary<string, Label>();
                    vartable[namelabel] = new Label();
                    vartable[namelabel].AutoSize = true;
                    vartable[namelabel].Location = new System.Drawing.Point(y, x);
                    vartable[namelabel].Name = namelabel;
                    vartable[namelabel].Size = new System.Drawing.Size(35, 13);
                    vartable[namelabel].TabIndex = 1;
                    vartable[namelabel].Text = labeltext;
                    vartable[namelabel].Cursor = System.Windows.Forms.Cursors.Hand;
                    this.Controls.Add(vartable[namelabel]);
                    vartable[namelabel].Click += new System.EventHandler(**vartable[namelabel]_Click**);



            }

        }
4

1 に答える 1

0

Label の "Tag" プロパティ (基本クラス Control から継承) を使用して、座席番号を格納できます。これにより、すべての Label オブジェクトに対して同じイベント ハンドラーを使用できます。イベント ハンドラーが呼び出されると、Tag を調べて、実際にクリックされた Label を特定できます。

予約済み/利用可能な情報は、座席番号でインデックス付けされたブール値の配列に格納できます。

サンプル イベント ハンドラ:

 private void label_Click(object sender, EventArgs e)
        {
            if (((Label)sender).Tag.Equals("1"))
            {
                MessageBox.Show("Label 1 clicked!");
            }
        }
于 2012-12-27T13:30:37.947 に答える