У меня есть диалог, который используется для выбора форм. Первоначально он просто выбирался из комбинированного поля, но теперь нам нужно выбрать несколько, поэтому мы изменили его на список.
Вот метод, который мы использовали для поля со списком:
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")
}
Но я не знаю, какой синтаксис использовать.
Чтобы открыть все формы одновременно, я бы попробовал другой подход, что-то вроде этого
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());
}
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;
}
}
}
использовать SelectedItems
:
foreach (var item view.ListBox1.SelectedItems)
SelectForm(item.ToString());
void SelectForm(string value)
{
if(value == "Form1")
return new Form1_Controller();
...
}
Вы можете использовать код ниже:
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;
}
ListBoxItem
не существует ...