1

所以我有一个二维标签数组:

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 一些关于单击数组哪个标签的信息,我就无法做到这一点!

4

2 回答 2

4

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

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

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

于 2013-08-09T08:51:07.373 回答
1

You can also make use of the Tag property:

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];
}
于 2013-08-09T09:27:11.830 回答