1

だから私はラベルの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 に渡さないとできません!

4

2 に答える 2

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