所以我有一个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,我无法做一些关于数组中哪个标签的信息点击!
答案 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];
}