0

カスタム関数をフックして、ラベルをクリックすると同じ関数が実行され、パラメーターが渡されるようにするにはどうすればよいですか?

List<int> _list1 = new List<int>(); //1, 2, 3, 4, 5
    foreach (var item in _list1)
    {
        Label lb = new Label { Text = item.ToString() };
    lb.Click += //custom function and pass the parameter item

    }

private void CustomFunctionOnClick(int s)
{
textBox1.Text = s.ToString();
}

-> ラベルのクリック イベントでデリゲートをフックできません。
-> 逆に、イベントにデータを渡す CustomEventArgs クラスを作成し、イベント(object sender, CustomEventArgs e)で同じコードを実行できます。しかし、クリック イベント デリゲートは CustomEventArgs をイベントのパラメーターとして定義していませんか?

次に、これはどのように行われますか?

4

2 に答える 2

0
List<int> _list1 = new List<int>(); //1, 2, 3, 4, 5

foreach (var item in _list1)
{
    // take copy of loop variable to avoid closing over the loop variable
    int i = item; 
    Label lb = new Label { Text = item.ToString() };
    lb.Click += (x,y) => CustomFunction(i);
}

void CustomFunction(int item)
{
}
于 2012-04-04T08:55:34.410 に答える
0

これを行うこともできます:

List<int> _list1 = new List<int>(); //1, 2, 3, 4, 5

foreach (var item in _list1)
{
    Label lb = new Label { Text = item.ToString() };
    lb.Tag = item;
    lb.Click += CustomFunctionOnClick;
}

private void CustomFunctionOnClick(object sender, EventArgs e)
{
    Label l = (Label)sender;
    int item = l.Tag;
}
于 2012-04-04T09:28:08.550 に答える