2016-07-26 133 views
0

通过上一个问题的答案和帮助。我现在遇到了另一个问题。删除按钮不删除列表框中的项目

我的btnDelete_MouseClick()事件不会删除存储在文本框中的客户信息。

我希望它采取类似信息:当完全相同的信息是在相应的文本字段和我打delete按钮,它删除它从列表框中阿什顿·史密斯864123456789

然后。

这是我到目前为止。它运行,但不会从列表框中删除客户。


public partial class Form1 : Form 
{ 
    Customer cust; 
    public Form1() 
    { 
     InitializeComponent(); 

     tbxFirstName.CharacterCasing = CharacterCasing.Upper; 
     tbxFirstName.MaxLength = 35; 
     tbxLastName.CharacterCasing = CharacterCasing.Upper; 
     tbxLastName.MaxLength = 35; 
     tbxPhone.MaxLength = 10; 
     listBoxDatabase.Name = "CUSTOMERS"; 
    } 

    private void btnAddCustomer_MouseClick(object sender, MouseEventArgs e) 
    { 
     //string customer = tbxFirstName.Text + " " + tbxLastName.Text + " " + tbxPhone.Text; 
     cust = new Customer(tbxFirstName.Text, tbxLastName.Text, tbxPhone.Text); 


     if (listBoxDatabase.Items.Cast<Customer>().Any(x => x.ToString() == cust.ToString())) 
     { 

      MessageBox.Show("Customer Already Exist!", "ERROR"); 
     } 
     else 
     { 
      listBoxDatabase.Items.Add(cust); 
     } 
    } 

    private void btnDelete_MouseClick(object sender, MouseEventArgs e) 
    { 
     Customer custToDelete = listBoxDatabase.Items.Cast<Customer>().FirstOrDefault(x => x.ToString() == cust.ToString()); 

     if (custToDelete != null) 
     { 
      listBoxDatabase.Items.Remove(cust); 
     } 
     else 
     { 
      MessageBox.Show("No Customer Found!", "ERROR"); 
     } 
    } 

    private void listBoxDatabase_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (listBoxDatabase.SelectedIndex != -1) 
     { 
      Customer cust = listBoxDatabase.Items[listBoxDatabase.SelectedIndex] as Customer; 
      tbxFirstName.Text = cust.getFirstName; 
      tbxLastName.Text = cust.getLastName; 
      tbxPhone.Text = cust.getPhone; 
     } 
    } 
} 

enter image description here

+0

是从listBoxDatabase中删除的客户? – Forlani

+0

您是否错过了鼠标点击的事件监听器? – Aliminator

+0

不,它不是从列表框中删除@Forlani – Ashton

回答

1

您的逻辑删除是错误的。您不应该使用.ToString()来比较对象。您可以将列表框的选定项目转换为您的特定类型,然后从项目集合中删除该项目:

Customer selected = listBoxDatabase.SelectedItem as Customer; 
if(selected != null) 
    listBoxDatabase.Items.Remove(selected); 
else 
    MessageBox.Show("No Customer Found!", "ERROR"); 
+0

这个代码是否替换我的整个方法或简单的if语句中的代码?感谢您的帮助! – Ashton

+0

这应该是你的整个方法。检查编辑。 – user3185569

+0

有一些错误(你有选择而不是选择!),但你是对的。这工作。谢谢 :) – Ashton