繁体   English   中英

通过事件动态创建多个列表框

[英]Multiple listboxes created dynamically with event

我正在使用for循环在c#动态创建多个listboxes 我想向其中每个添加一个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!
}

您需要使用LBTest_SelectionChanged object sender来找出哪个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的选择更改。 这就是为什么它发生。

尝试这个:

public void LBTest_SelectionChanged(object sender, EventArgs e, int i)
{
   ListBox lst = sender as ListBox;
   if (lst.Name ==  "listBox1")
    {
       // do something here according to..        
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM