如何从具有变量名称的动态创建的列表框中检索选择

时间:2018-01-09 20:25:03

标签: c# winforms

foreach (Control ctrl in Controls)
{
    if(ctrl is ListBox)
    {
        string selectedtext = ctrl.GetItemText(ctrl.SelectedItem);
    }
}

获取以下消息

  

Control不包含" GetItemText"的定义并且没有" SelectedItem"

的扩展方法

使用名称LTBitemXX

创建列表框

2 个答案:

答案 0 :(得分:1)

ctrl变量声明为Control类型,因此您无法使用特定于派生类的任何内容。

这样的东西会起作用:

foreach (Control ctrl in Controls)
{
    ListBox lb = ctrl as ListBox;
    if(lb != null)
    {
        string selectedtext = lb.GetItemText(lb.SelectedItem);
    }
}

答案 1 :(得分:1)

foreach (Control ctrl in Controls)
{
   if(ctrl is ListBox)
   {
       string selectedtext = ((ListBox)ctrl).GetItemText(ctrl.SelectedItem);
   }
}

您还可以使用Linq获取指定类型的控件

foreach (ListBox listbox in Controls.OfType<ListBox>())
{
   string selectedtext = listbox.GetItemText(listbox.SelectedItem);
}