将单击的标签传递给其单击的方法。 C#

时间:2013-08-09 08:47:48

标签: c# arrays events event-handling

所以我有一个2D数组标签:

Label[][] _mainAreaLabels = new Label [MAX_COLUMNS_OF_CARDS][];

我可以添加一个方法,在点击它们时调用它:

for (int i = 0; i <= _mainAreaLabels.Length - 1 ; i++) //for each column
{
    for (int j = 0; j <= _mainAreaLabels[i].Length - 1; j++ )
    {
        _mainAreaLabels[i][j].Click += ActiveLabelsClicked;
    }
}

但是我不确定如何将点击的标签(或者只是被点击的标签的索引 - 或者没问题)传递给ActiveLabelsClicked方法。在ActiveLabelsClicked方法中,我想更新一个单独的标签,其中包含单击的数组中标签的文本,如果不通过ActiveLabelsClicked,我无法做一些关于数组中哪个标签的信息点击!

2 个答案:

答案 0 :(得分:4)

确保您的事件处理程序如下所示:

void ActiveLabelsClicked(object sender, EventArgs e){
   // do stuff with the 'sender' object
}

sender对象将包含您单击的对象。

答案 1 :(得分:1)

您还可以使用Tag属性:

for (int i = 0; i <= _mainAreaLabels.Length - 1; i++) {
  for (int j = 0; j <= _mainAreaLabels[i].Length - 1; j++) {
    _mainAreaLabels[i][j].Tag = new int[] { i, j };
    _mainAreaLabels[i][j].Click += ActiveLabelsClicked;
  }
}

void ActiveLabelsClicked(object sender, EventArgs e) {
  var label = (Label)sender;
  var tag = (int[])label.Tag;
  int column = tag[0];
  int row = tag[1];
}