运行时控件甚至处理Windows窗体



我在运行时绘制了一行标签,并附加了name属性来识别它们我如何获得事件处理程序,以获得选中/单击运行时控制属性(文本)

   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)
        {
               ???????????????
        }

应该是sender:

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

然后做你想做的,识别它,等等。

但是,要小心这些处理程序被不正确地调用:我已经多次看到程序员在代码中"手动"调用这些处理程序,例如TT_Click(null, new EventArgs())等。作为逻辑的一部分,您最好做一些完整性检查。
 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是一个对象,它包含这个事件的发送者,在你的例子中是一个标签。现在你需要把它转换成一个标签,你可以访问文本属性

相关内容

  • 没有找到相关文章