我是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);
}
}
}
答案 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++)
{
}
}