2013-06-14 11 views
4

У меня есть 2 ошибки в моем коде и не могу понять, как это решить.ListBox.Contains не работает должным образом

Это мой код:

private void add_button_Click(object sender, EventArgs e)` 
    { 
     try 
     { 

      if (list_selected.Contains(List_selection.SelectedItem)) 
      { 
       MessageBox.Show("Can't add the same type twice"); 
      } 
      else 
      { 
       list_selected.Items.Add(List_selection.SelectedItem); 
      } 
     } 
     catch 
     { 

      { 
       MessageBox.Show("No type selected"); 
      } 

     } 
    } 

Эти ошибки:

Ошибка 1

Лучший перегружен матч метод «System.Windows.Forms.Control.Contains (System.Windows.Forms.Control) ' имеет некоторые недопустимые аргументы

Ошибка 2

Аргумент 1: не удается преобразовать из 'объекта' в 'System.Windows.Forms.Control' C: \ Projects \ flashloader2013 \ mainapplication \ Form1.cs 467 44 Main

Пожалуйста, помогите мне. ]

List_selection и list_selected являются ListBoxes.

+0

Какие строки выделены при двойном щелчке по ошибке? –

+0

@OP: Пожалуйста, не добавляйте 'ЗАКРЫТО' в заголовок вопроса, если вы приняли ответ. [** Закрыто **] (http://meta.stackexchange.com/questions/10582/what-is-a-closed-question) имеет особое значение для SO. Название также является самой важной частью вопроса. Он должен содержать только предмет вопроса. Он используется для поисковых систем, чтобы другие люди могли найти ответы на похожие вопросы. –

ответ

3

Вам нужно написать:

if (list_selected.Items.Contains(List_selection.SelectedItem)) 

В противном случае проверьте коллекцию элементов управления в ListView/Listbox (независимо от управления, могут содержать другие элементы управления)

+0

Извините, но не работает –

+0

У вас такая же ошибка? –

+0

Извините, пропустил Controls ;-) –

2

Turn это:

if (list_selected.Contains(List_selection.SelectedItem)) 

в:

if (list_selected.Items.Contains(List_selection.SelectedItem)) 
3

Вместо ListBox.Contains, который проверяет, содержит ли элемент управления элемент управления child, который вы хотите проверить, содержит ли ListBox этот элемент. Так что используйте ListBox.Items.Contains:

if (list_selected.Items.Contains(List_selection.SelectedItem)) 
1

Ваш код должен быть, как это

private void button1_Click(object sender, EventArgs e) { 
    if (listBox1.Items.Contains(listBox1.SelectedItem)) { 
     MessageBox.Show("Can't add the same type twice"); 
    } 
    else { 
     listBox1.Items.Add(listBox1.SelectedItem); 
      } 
     } 
1

Ваш код не будет работать, потому что вы пытаетесь запроса ListBox.

Если вы видите ваш добавить

list_selected.Items.Add(List_selection.SelectedItem); 

вы увидите, что вы должны запросить элементы. как показано ниже.

list_selected.Items.Contains(List_selection.SelectedItem))