我使用listboxes
循环在c#
中动态创建多个for
。
我想为每个人添加SelectionChanged
,以便在所选项目发生变化时,根据listbox
和项目显示内容。
但似乎事件只与最后一个事件有关:
for (int d =0; d<3; d++)
{
//list des attribut
ListBox lb = new ListBox();
lb.Width = 200;
lb.Height = 250;
for( int i=0; i< names.Length; i++)
{
lb.Items.Add(names[i]);
}
listboxes.Add(lb);
lb.SelectionChanged += (sender, e) => LBTest_SelectionChanged(sender, e, d);
ResultPalner.Children.Add(lb);
}
public void LBTest_SelectionChanged(object sender, EventArgs e, int i)
{
// Do something here according to which listbox it is!
}
答案 0 :(得分:1)
您需要使用object sender
中的LBTest_SelectionChanged
来找出哪个ListBox
更改了其选择。
public void LBTest_SelectionChanged(object sender, EventArgs e, int i) {
if(/* sender is listbox 1*/) {
/* do something */
} else if (/* sender is listbox 2*/) {
/* do something else */
} else ...
}
像
public void LBTest_SelectionChanged(object sender, EventArgs e, int i) {
if((ListBox)sender.Name == "name1") {
/* do something */
} else if ((ListBox)sender.Name == "name2") {
/* do something else */
} else ...
}
发生的事情基本上就是你做的事情。您希望相同的函数响应所有ListBoxes
的选择更改。这就是它发生的原因。
答案 1 :(得分:0)
试试这个:
public void LBTest_SelectionChanged(object sender, EventArgs e, int i)
{
ListBox lst = sender as ListBox;
if (lst.Name == "listBox1")
{
// do something here according to..
}
}