如何在列表中创建一个删除按钮

时间:2020-11-03 19:52:50

标签: c# arrays list enums listbox

我是stackoverflow的新手。下面是我目前正在从事的项目,可以说是一个初学者。 到目前为止,我设法创建了一个添加按钮。因此,基本上,该程序所做的是显示可用的物品和租赁的物品。选择项目和要出租的数量,然后按添加按钮将其添加到出租列表。现在我正试图做相反的事情,起初我以为这很容易,但显然并非如此。另外,如何按ProductType对项目排序?像PS3和Xbox 360应该在控制台中一样,Monitor和usb应该在附件中,等等,使用组合框。谢谢您的帮助!

        item_name = new List<string>()
        { 
            "Arduino", "USB 2TB ", "USB 120GB", "USB 32GB ",
            "Apple iPad", "Apple Pencil", "Adapter for Arduino",
            "Arduino camera", "Canon Lens", "Xbox 360", "PS3" ,
            "Apple iPhone 8", "Google Chromescast", "Samsung Monitor"
        };
        item_amount = new List<int>()
        {
            10, 20, 15, 14, 9, 7, 23, 9, 3, 4, 5, 7, 2, 6
        };
        item_rented = new List<int>()
        {
            0,0,0,0,0,0,0,0,0,0,0,0,0,0
        };
    }


    private void ShowInfoRentedItems() //SHOWS INFO ABOUT RENTED ITEMS
    {


        this.lb_rented.Items.Clear();
        for (int i = 0; i < item_name.Count; i++)
        {
            this.lb_rented.Items.Add(item_name[i] + "  rented: " + item_amount[i]);
        }



    }

    private void button1_Click(object sender, EventArgs e) //ADD BUTTON
    {
        
        int index = lb_available.SelectedIndex;
        if (index < 0) { return; }
        MessageBox.Show(item_name[index] + " rented succesfully");


        string text = lb_available.SelectedItem.ToString();
        lb_available.Items[index] = " ";

        
        item_amount[index] -= int.Parse(textBox2.Text);
        item_rented[index] += int.Parse(textBox2.Text);


        ShowInfoAvailbe(item_name, item_amount);

        

        this.lb_rented.Items.Clear();
        for (int i = 0; i < item_rented.Count; i++)
        {
            if (item_rented[i] > 0)
            {
                this.lb_rented.Items.Add(item_name[i] + " rented: " + item_rented[i]);

            }
        }
    }

    private void ShowInfoAvailbe(List<String> stuff, List<int> sth) // SHOWS WHICH ITEMS ARE AVAILABLE
    {
        this.lb_available.Items.Clear();
        for (int i = 0; i < item_name.Count; i++)
        {
            this.lb_available.Items.Add(item_name[i] + "  avaialable: " + item_amount[i]);
        }
      


    }

    private void button4_Click(object sender, EventArgs e) //BUTTON TO SHOW INFO
    {
        // shows all available items

        ShowInfoAvailbe(item_name, item_amount);
    }

    private void button5_Click(object sender, EventArgs e)
    {
        ShowInfoRentedItems();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        int index = lb_rented.SelectedIndex;
        if (index < 0) { return; }
        MessageBox.Show(item_name[index] + " rented succesfully");


        string text = lb_rented.SelectedItem.ToString();
        lb_rented.Items[index] = " ";


        item_amount[index] += int.Parse(textBox2.Text);
        item_rented[index] -= int.Parse(textBox2.Text);


        ShowInfoAvailbe(item_name, item_amount);

    }


}

}

2 个答案:

答案 0 :(得分:0)

这里有Item类的示例。

public class Item 
{
    public string Name { get; set; }
    
    public int Amount { get; set; }
    
    public int Rented { get; set; }
    
    public Item (string name, int amount, int rented)
    {
        Name = name;
        Amount = amount;
        Rented = rented;
    }
    
    public void Rent()
    {
        if (Amount > 0)
        {
            Amount--;
            Rented++;
        }
    }
    
    public void Return()
    {
        if (Rented > 0)
        {
            Amount++;
            Rented--;
        }
    }
    
    public override string ToString() 
    {
        return $"{Name} - Amount: {Amount} - Rented: {Rented}";
    }
}

然后您可以轻松管理ListBox中的项目。这些是表单中按钮的事件处理程序。

private void AddButton_Click(object sender, EventArgs e)
{
    listBox.Items.Add(new Item("NAME", 10, 1)); // constructor parameters (name, amount, rented)
}

private void RemoveButton_Click(object sender, EventArgs e)
{
    if (listBox.SelectedIndex >= 0)
    {
        listBox.Items.RemoveAt(listBox.SelectedIndex);
    }
}

答案 1 :(得分:0)

private void button7_Click(object sender, EventArgs e) //BUTTON REMOVE AN ITEM
    {
        int index = lb_rented.SelectedIndex;
        if (index < 0) { return; }


        string text = lb_rented.SelectedItem.ToString();


        item_amount[index] += int.Parse(textBox2.Text);
        item_rented[index] -= int.Parse(textBox2.Text);

        string productName = text.Split('|')[0];

        for (int i = 1; i < lb_available.Items.Count; i++)
        {
            if (lb_available.Items[i].ToString().Split('|')[0].Contains(productName))
            {
                int newValue = int.Parse(lb_available.Items[i].ToString().Split('|')[1].Replace("available: ", "")) + 1;
                item_amount[i] = newValue;
                item_rented[i] -= int.Parse(this.textBox2.Text);
                string bruh = lb_available.Items[i].ToString().Split('|')[0] + "|available: " + newValue;
            }
        }
         private void button6_Click(object sender, EventArgs e) //BUTTON REMOVE ALL RENTED ITEMS
    {
        for (int i = 0; i < lb_rented.Items.Count; i++)
        {

        }
    }