Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过单击按钮从列表中删除项目_C#_List_Button - Fatal编程技术网

C# 如何通过单击按钮从列表中删除项目

C# 如何通过单击按钮从列表中删除项目,c#,list,button,C#,List,Button,我有一个用“foreach”填充的列表,然后我想用一个按钮删除一个选中的项目。。。我是这样做的: private void btn1_Copy1_Click(object sender, RoutedEventArgs e) { if (this.MyList.SelectedIndex >= 0) { this.MyList.Items.RemoveAt(this.MyList.SelectedIndex); } }

我有一个用“foreach”填充的列表,然后我想用一个按钮删除一个选中的项目。。。我是这样做的:

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

您已将该项目从组合的项目列表中删除,而不是从GameAdd类的myList中删除。当你重新填充你的组合列表时,你读取了GameAdd静态列表中仍然存在的上一个项目

因此,假设您在列表中的字段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);
    }                
} 
要使其工作,您需要在组合框列表项中添加的
gamesad
对象的属性中没有空格。如果不是这样,那么在将字符串添加到组合框时,在字符串之间添加某种分隔符。例如,创建一个点,然后使用该点进行拆分


更好的方法是使用组合框的
DisplayMember
ValueMember
DataSource
属性,这样您就可以使用属性作为键来识别游戏对象,而无需使用繁琐的拆分

请让我们看看您的添加按钮代码您可以这样做,对初学者进行谷歌搜索。。在网上有很多关于如何做到这一点的例子,从这里开始,请显示更多的努力!不要将代码粘贴为注释更新问题并将附加代码粘贴到原始问题将代码添加到问题中。不要在评论中发布。我已经更新了我的代码。。。