2013-06-14 3 views
0

В моей форме есть textBox1 и listbox1, buttonAdd, buttonRemoveКак удалить элемент (запись из текстового поля) в ListBox

buttonAdd => Хорошо, я могу это сделать. buttonRemove: Когда вы удаляете раздел: - Удалить запись из текстового поля: Проверить, что элемент в элементе списка должен быть удален, если есть четкие сообщения, если сообщение не найдено - Удалить выбранный элемент в списке

Это моя идея:

 private void butonRemove_Click(object sender, EventArgs e) 
    { 
     if (textbox1.Text != "") 
     { 
      int i = 0; 
      while (i <= listbox1.Items.Count) 
      { 
       string Item_remove = textbox1.Text; 
       if (listbox1.Items[i].ToString().Contains(Item_remove)) 
       { 
        DialogResult conf_remove; 
        conf_remove = MessageBox.Show("Do you wwant to remove: " + listbox1.Items[i].ToString(), "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); 
        if (conf_remove == DialogResult.Yes) 
        { 
         listbox1.Items.RemoveAt(i); 
         break; 
        } 
        else if (conf_remove == DialogResult.No) 
         i++; 
       } 
       else 
       { 
        MessageBox.Show("Not found"); 
        break; 
       } 
      } 

      textbox1.Text = ""; 
      textbox1.Focus(); 
     } 
     else if (listbox1.SelectedIndex < 0) 
      MessageBox.Show("Please select item to remove"); 
     else 
      listbox1.Items.Remove(listbox1.SelectedItem); 

}

Пожалуйста, помогите мне исправить, спасибо

+0

Это приложение WPF, правильно? – Sevenate

+1

Не могли бы вы разместить какой-нибудь код, который у вас есть (xaml + cs), чтобы лучше понять проблему? – Sevenate

ответ

4

Вот код для пункта удаления.

private void buttonRemove_Click(object sender, EventArgs e) { 
     if (listBox1.SelectedIndex == -1) { // Not Selected Anything 
      MessageBox.Show("Select an item to delete"); 
     } 
     else { 
      listBox1.Items.RemoveAt(listBox1.SelectedIndex); // Remove item 
     } 
    } 
+0

как я могу удалить при вводе элемента из textbox1 – user2485423

0

Нечто подобное?

void buttonRemove_Click(object sender, EventArgs e) 
{ 
    string matchcode = TextBox1.Text; 

    ListItem item = this.ListBox1.Items.FindByText(matchcode); 

    if (item != null) 
    { 
     //found 
     this.ListBox1.Items.Remove(item); 
    } 
    else 
    { 
     //not found 
     MessageBox.Show("is not found"); 
    } 
} 
0

Это то, что вы ищете, это контролирует всю необходимую проверку.

if (ListBox.SelectedIndex == -1) 
     { 
      if (ListBox.NumberOfItems == 0) // if no index, need to select a row! 
      { 
       MessageBox.Show("No items to remove!"); 
      } 
      else 
      { 
       MessageBox.Show("Please select an item first!"); 
      } 
     } 
     else 
     { 
      ListBox.Items.RemoveAt(lstStorage.SelectedIndex); 
     } 

Это удалит элемент, который был выбран, с требуемой валидацией.

Я также прокомментировал некоторый код, чтобы показать вам, что означают части. Если вам нужно больше объяснений о том, как это работает, просто спросите:

+0

Я хочу узнать больше о случае, удаленном из записи в текстовом поле, если есть несколько похожих записей, например, мужчина или женщина, вам нужно проверить, какие из них вы хотите удалить. Если в списке нет записи, сообщение не найдено – user2485423

+0

К сожалению, я не совсем понимаю, что вы просите, проверка в операторах if будет проверяться, если список пуст или нет. Чтобы проверить текст в списке, вы должны (упростить жизнь), чтобы подтвердить ввод, поместив ввод в нижний регистр. Если вы хотите ограничить то, что пользователь может ввести в список, то, возможно, просто используйте переключатели с условиями, которые им разрешено использовать. Однако, чтобы сделать запись в текстовом поле строчной строкой, вы просто вызываете textbox.text.ToLower и упрощаете проверку фраз. –