我有一个对话框,用于选择要显示的表单。最初只是从组合框中选择,但现在我们需要选择多个,所以我们将其更改为列表框。
以下是我们用于组合框的方法:
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 :(得分: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;
}
}
}