![](/img/trans.png)
[英]How do I click a button that will remove an item from a ListBox and the List that holds the information for the ListBox in C#?
[英]How Do I Append Items to a Listbox in Another Window Whenever I Click a Button in C#?
我正在 Wawa 觸摸屏模擬器上開發 WPF 應用程序。 每當我單擊菜單中的一個按鈕(例如飲料)時,該項目的名稱和價格將顯示在另一個 window 的列表框中(例如,“Frozen Smoothie”,1.99)。 下面的圖片顯示了正在發生的事情。
但是,如果我 select 另一個項目(例如,冷凍卡布奇諾),該項目的信息將替換我之前選擇的項目。
我制作了一個收據 class,它采用食品的名稱和價格來創建一個名為 foodItem 的收據 object,並將其添加到列表框中。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Wawa_TouchScreen
{
public class Receipt
{
private string foodItemName;
private double price;
public Receipt(string foodItemName, double price)
{
this.foodItemName = foodItemName;
this.price = price;
}
public override string ToString()
{
string foodItem = foodItemName + " $" + price;
return foodItem.ToString();
}
public string getFoodItemName()
{
return foodItemName;
}
public double getPrice()
{
return price;
}
}
}
這是飲料 window 的代碼:
public partial class Window1 : Window
{
public string foodItemName;
public double price;
private void frozenSmoothieBtn_Click(object sender, RoutedEventArgs e)
{
foodItemName = "Frozen Smoothie";
price = 1.99;
Receipt foodItem = new Receipt(foodItemName, price);
MessageBox.Show("You have chosen a frozen smoothie.", foodItemName);
Window2 checkOut = new Window2();
checkOut.Show();
this.Visibility = Visibility.Hidden;
checkOut.lstBoxReceipt.Items.Add(foodItem);
}
private void frozenCappuccinoBtn_Click(object sender, RoutedEventArgs e)
{
foodItemName = "Frozen Cappucino";
price = 1.99;
Receipt foodItem = new Receipt(foodItemName, price);
MessageBox.Show("You have chosen a frozen cappuccino.", foodItemName);
Window2 checkOut = new Window2();
checkOut.Show();
this.Visibility = Visibility.Hidden;
checkOut.lstBoxReceipt.Items.Add(foodItem);
}
}
}
如果您能提供任何幫助,我將不勝感激。 謝謝!
要立即解決您的問題,您需要創建一個共享列表 (orderList) 以綁定到 lstBoxReceipt 列表框。 所有添加和刪除 Receipt 類型的操作都應該在共享列表上執行。
我們使用 ObservableCollection 而不是 List,因為如果您使用 List,您對基礎列表 object 的更改將不會立即顯示在 Listbox 上。 它只會顯示第一個項目。
此外,嘗試通過重構按鈕單擊事件來改進您的代碼,以調用將收據添加到列表的方法和另一個顯示結帳 window 的方法。通過將 window 創建代碼移到事件代碼之外來實例化結帳 window 一次。
public partial class MainWindow : Window
{
public string foodItemName;
public double price;
//Add a shared list that you operate on adding and removing your food items from
//then assign it to the lstBoxReceipt.ItemsSource
ObservableCollection<Receipt> orderList = new ObservableCollection<Receipt>();
//Instantiate the checkOut window
Window2 checkOut = new Window2();
private void frozenSmoothieBtn_Click(object sender, RoutedEventArgs e)
{
foodItemName = "Frozen Smoothie";
price = 1.99;
Receipt foodItem = new Receipt(foodItemName, price);
MessageBox.Show("You have chosen a frozen smoothie.", foodItemName);
orderList.Add(foodItem);
checkOut.Show();
this.Visibility = Visibility.Hidden;
//Add the order list as the data source of the listbox.
checkOut.lstBoxReceipt.ItemsSource = orderList;
}
private void frozenCappuccinoBtn_Click(object sender, RoutedEventArgs e)
{
foodItemName = "Frozen Cappucino";
price = 1.99;
Receipt foodItem = new Receipt(foodItemName, price);
MessageBox.Show("You have chosen a frozen cappuccino.", foodItemName);
orderList.Add(foodItem);
checkOut.Show();
this.Visibility = Visibility.Hidden;
//Add the order list as the data source of the listbox.
checkOut.lstBoxReceipt.ItemsSource = orderList;
}
}
我正在 Wawa 觸摸屏模擬器上開發 WPF 應用程序。 每當我單擊菜單中的按鈕(例如,飲料)時,項目的名稱和價格將顯示在另一個 window 的列表框中(例如,“Frozen Smoothie”,1.99)。 下面的圖片顯示了正在發生的事情。
但是,如果我 select 另一個項目(例如,冷凍卡布奇諾),該項目的信息將替換我之前選擇的項目。
我制作了一個收據 class,它采用食品的名稱和價格來創建一個名為 foodItem 的收據 object,它被添加到列表框中。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Wawa_TouchScreen
{
public class Receipt
{
private string foodItemName;
private double price;
public Receipt(string foodItemName, double price)
{
this.foodItemName = foodItemName;
this.price = price;
}
public override string ToString()
{
string foodItem = foodItemName + " $" + price;
return foodItem.ToString();
}
public string getFoodItemName()
{
return foodItemName;
}
public double getPrice()
{
return price;
}
}
}
這是飲料 window 的代碼:
public partial class Window1 : Window
{
public string foodItemName;
public double price;
private void frozenSmoothieBtn_Click(object sender, RoutedEventArgs e)
{
foodItemName = "Frozen Smoothie";
price = 1.99;
Receipt foodItem = new Receipt(foodItemName, price);
MessageBox.Show("You have chosen a frozen smoothie.", foodItemName);
Window2 checkOut = new Window2();
checkOut.Show();
this.Visibility = Visibility.Hidden;
checkOut.lstBoxReceipt.Items.Add(foodItem);
}
private void frozenCappuccinoBtn_Click(object sender, RoutedEventArgs e)
{
foodItemName = "Frozen Cappucino";
price = 1.99;
Receipt foodItem = new Receipt(foodItemName, price);
MessageBox.Show("You have chosen a frozen cappuccino.", foodItemName);
Window2 checkOut = new Window2();
checkOut.Show();
this.Visibility = Visibility.Hidden;
checkOut.lstBoxReceipt.Items.Add(foodItem);
}
}
}
我很感激你能提供的任何幫助。 謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.