2015-04-02 122 views
1

我有一個對話框用於選擇要顯示的窗體。最初它只是從組合框中選擇,但現在我們需要選擇多個,所以我們將其更改爲列表框。Foreach在Listbox中選擇的項目?

這裏是我們使用組合框的方法:

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") 
} 

但我不知道正確的語法使用。

+0

假設您使用的是WPF,請爲其添加XAML ListBox1 – 2015-04-02 05:15:58

+0

@SaagarEliasJacky對不起,我正在使用WinForms,而不是WPF – Ben 2015-04-02 05:17:52

+0

你想同時顯示所有的表單還是一個接一個地顯示? – Kira 2015-04-02 05:19:38

回答

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()); 
} 
+0

@Ben,請參考此問題以顯示多個同時形成http://stackoverflow.com/questions/15300887/run-two-winform-windows-simulate – Kira 2015-04-02 05:54:12

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; 
} 
+0

你在找這樣的東西嗎? – Peyman 2015-04-02 05:22:25

+0

類似的東西,但語法是錯誤的。 'ListBoxItem'不存在... – Ben 2015-04-02 05:24:13

+0

你可以使用var來代替那個,也可以使用listbox的SelectedItems – Peyman 2015-04-02 05:26:25

1

使用SelectedItems

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


void SelectForm(string value) 
{ 
    if(value == "Form1") 
     return new Form1_Controller(); 
    ... 
} 
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; 
       } 
     } 
    } 
相關問題