Foreach在列表框中选择了哪个项目?

时间:2015-04-02 05:11:12

标签: c# winforms

我有一个对话框,用于选择要显示的表单。最初只是从组合框中选择,但现在我们需要选择多个,所以我们将其更改为列表框。

以下是我们用于组合框的方法:

if (view.ShowDialog() == DialogResult.OK)
{          
    if (view.FormType == "Form1")
        return new Form1_Controller();
    else if (view.FormType == "Form2")
        return new Form2_Controller();
    else if (view.FormType == "Form3")
        return new Form3_Controller();
    else return null;
}
else
{
    return null;
}

我们如何将它封装在一个循环中,该循环将为每个选择返回一个控制器?

例如,我尝试了类似

的内容
foreach (ListBoxItem listItem in view.ListBox1)
{
    //do if (view.FormType == "Form1")
}

但我不知道使用正确的语法。

4 个答案:

答案 0 :(得分:1)

您可以使用以下代码:

foreach (var item in view.ListBox1.SelectedItems)
{        
    ShowForm(item.Value);
}

private void ShowForm(formName)
{
  if (view.FormType == "Form1")
    return new Form1_Controller();
  else if (view.FormType == "Form2")
    return new Form2_Controller();
  else if (view.FormType == "Form3")
    return new Form3_Controller();
  else return null;
}

答案 1 :(得分:1)

使用SelectedItems

foreach (var item view.ListBox1.SelectedItems)
    SelectForm(item.ToString());


void SelectForm(string value)
{
    if(value == "Form1")
        return new Form1_Controller();
    ...
}

答案 2 :(得分:1)

要同时打开所有表单,我会尝试使用不同的方法

ArrayList controllersSelected = new ArrayList();

foreach (var item in view.ListBox1.SelectedItems)
    GetSelectedItem(item.Value, out controllersSelected);

//Your logic to display selected forms simultaneously
DisplaySimultaneousForms(controllersSelected);

private void GetSelectedItem(formName, out ArrayList list)
{
  if (view.FormType == "Form1")
    list.Add(new Form1_Controller());
  else if (view.FormType == "Form2")
    list.Add(new Form2_Controller());
  else if (view.FormType == "Form3")
    list.Add(new Form3_Controller());
}

答案 3 :(得分:1)

private void button1_Click(object sender, EventArgs e)
  {
     for (int i = 0; i <= listBox1.SelectedItems.Count - 1; i++) 
      {
           switch (listBox1 .Items [i].ToString ())
                {
                    case "FirstForm":
                        Form2 frm2 = new Form2();
                        frm2.Show();
                        break;
                    case "SecondForm":
                        Form3 frm3 = new Form3();
                        frm3.Show();
                        break;
                    default:
                        break;
               }
       }
  }