2014-11-08 85 views
-3

我有一個列表,我填寫了一個「foreach」,然後我想用按鈕刪除一個選定的項目......我這樣做:我如何使用button_click從列表中刪除一個項目

private void btn1_Copy1_Click(object sender, RoutedEventArgs e) 
{ 
    if (this.MyList.SelectedIndex >= 0) 
    { 
     this.MyList.Items.RemoveAt(this.MyList.SelectedIndex); 
    }     
} 

但後來,當我按下另一個按鈕將項目添加到列表中出現,我刪除以及前一個項目。

private void btn1_Click(object sender, RoutedEventArgs e) 
{ 
    ComboBoxItem curItem = (ComboBoxItem)Games.SelectedItem; 
    string SelectedValue = curItem.Content.ToString(); 


    GamesAdd myOrder = new GamesAdd(SelectedValue, Convert.ToInt16(price.Text), Convert.ToInt16(quant.Text), 
                (Convert.ToInt16(price.Text)*Convert.ToInt16(quant.Text))); 
    GamesAdd.myList.Add(myOrder); 
    MyList.Items.Clear(); 
    int i=0; 
    foreach (var item in GamesAdd.myList) 
    { 
     i++; 
     MyList.Items.Add(i + ". " + item.GameName + " " + item.GameQuant + " x " + item.GamePrice +" " + item.TotalPrice); 


    } 

} //This is the add button code 
+0

請讓我們看看你的添加按鈕代碼 – 2014-11-08 17:01:02

+0

你可以做這個做一個谷歌搜索初學者..有很多例子如何在網上做到這一點從這裏開始[如何多,C#示例](http://wwww.google.com)[列表 .Remove Method](http://msdn.microsoft.com/en-us/library/cd666k3e(v = vs.110).aspx)請多加努力! – MethodMan 2014-11-08 17:02:46

+0

不要粘貼您的代碼作爲評論更新您的問題,並將附加代碼粘貼到原始問題中 – MethodMan 2014-11-08 17:04:05

回答

2

您已從項目列表中刪除項目,而不是從類GameAdd的myList中刪除項目。當您重新裝載您的組合列表您重新進行添加的上一個項目仍然存在於GameAdd靜態myList中

因此,假設你有場GameName在列表中作爲唯一你可以嘗試

private void btn1_Copy1_Click(object sender, RoutedEventArgs e) 
{ 
    if (this.MyList.SelectedIndex >= 0) 
    { 
     string itemName = this.MyList.Items[this.MyList.SelectedIndex].ToString(); 
     string[] gameParts = itemName.Split(' '); 
     GamesAdd g = GamesAdd.myList.FirstOrDefault(x => x.GameName == gameParts[1]); 
     GamesAdd.myList.Remove(g); 
     this.MyList.Items.RemoveAt(this.MyList.SelectedIndex); 
    }     
} 

對於本爲了工作,您需要在組合框列表項中添加GamesAdd對象的屬性中沒有空格。如果情況並非如此,那麼在將字符串添加到組合框中時,可以在字符串之間添加某種分隔符。例如一個點,然後使用該點進行分割。

一個更好的方法是使用組合框的DisplayMemberValueMemberDataSource屬性,因此你可以使用一個屬性作爲關鍵識別GamesAdd對象,而無需使用笨重的分裂