Каждый выбранный элемент в списке?

1

У меня есть диалог, который используется для выбора форм. Первоначально он просто выбирался из комбинированного поля, но теперь нам нужно выбрать несколько, поэтому мы изменили его на список.

Вот метод, который мы использовали для поля со списком:

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
  • 0
    @SaagarEliasJacky Извините, я использую WinForms, а не WPF
Показать ещё 2 комментария
Теги:
winforms

4 ответа

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

использовать SelectedItems:

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


void SelectForm(string value)
{
    if(value == "Form1")
        return new Form1_Controller();
    ...
}
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
    Вы ищете что-то подобное?
  • 0
    Нечто подобное, однако синтаксис неправильный. ListBoxItem не существует ...
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню