2016-07-26 193 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