0

実行時にラベルの行を描画し、名前プロパティを添付してそれらを識別しています 選択/クリックされた実行時コントロール プロパティ (テキスト) を取得するイベント ハンドラを取得するにはどうすればよいですか

   for (int yy = 1; y < 40; y++)
   {
     Label TT = new Label();
     TT.Name = "TT" + yy.ToString();
     TT.Location = new Point(xx, zz);
     TT.BorderStyle = BorderStyle.FixedSingle;
     TT.Click+= new EventHandler(TT_Click);
     TT.Width = 20;
     TT.Text = yy.ToString();
      this.Controls.Add(TT);
       xx += 20;
    }

   void TT_Click(object sender,EventArgs e)
        {
               ???????????????
        }
4

2 に答える 2

1

senderものであるべきです:

void TT_Click(object sender,EventArgs e) {
  var label = (Label)sender;
}

次に、それを好きなように処理し、識別します。

ただし、これらのハンドラーが不適切に呼び出されることに注意してください。プログラマーがコードなどでこれらを「手動で」呼び出すのを何度も見てきましTT_Click(null, new EventArgs())た。ロジックの一部として健全性チェックを行うことをお勧めします。

于 2013-04-26T09:29:30.287 に答える
0
 void TT_Click(object sender,EventArgs e) {
     if(sender == null) return; //return if the sender object is null
     MessageBox.Show(((Label)sender).Text); //Shows a MessageBox whith the Text of the Label
 }

Sender は、このイベントの送信者を含むオブジェクトです。この場合、ラベルの 1 つです。これをラベルにキャストする必要があり、テキスト プロパティにアクセスできます。

于 2013-04-26T09:31:37.393 に答える