我已经负责一个项目,我必须使用c#来创建从文件中消化对象列表的表单,然后才能将列表传递到另一个窗口。
public class Food
{
public string Name;
public string Category;
public int Price;
}
public class Ingredient
{
public string Name;
public string Category;
public decimal PricePerUnit;
public decimal Quantity;
public Ingredient(string pName, string pCategory, decimal pPricePerUnit, decimal pQuantity)
{
Name = pName;
Category = pCategory;
PricePerUnit = pPricePerUnit;
Quantity = pQuantity;
}
}
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<Ingredient> Inventory = CallInventoryFile();
}
private void inventoryButton_Click(object sender, RoutedEventArgs e)
{
InventoryWindow wnd = new InventoryWindow();
wnd.ShowDialog();
}
public List<Ingredient> CallInventoryFile()
{
List<Ingredient> ProcessedInventory = new List<Ingredient>();
try
{
string[] fileLines = File.ReadAllLines("Inventory.txt");
//Reading in the file
for (int i = 0; i < fileLines.Length; i++)
{
string[] CurrentLine = fileLines[i].Split(',');
string Name = CurrentLine[0].Trim();
string Category = CurrentLine[1].Trim();
decimal PricePerUnit = decimal.Parse(CurrentLine[2].Trim());
decimal Quantity = decimal.Parse(CurrentLine[3].Trim());
Ingredient IngredientToAdd = new Ingredient(Name, Category, PricePerUnit, Quantity);
ProcessedInventory.Add(IngredientToAdd);
}
return ProcessedInventory;
}
catch
{
//if we get here read in failed
MessageBox.Show("There was an error reading in the file");
return ProcessedInventory;
}
}
然后我必须移动到这个窗口
public InventoryWindow()
{
InitializeComponent();
categoryComboBox.Items.Add("All");
categoryComboBox.Items.Add("Pizza");
categoryComboBox.Items.Add("Burger");
categoryComboBox.Items.Add("Sundry");
categoryComboBox.SelectedValue = "All";
}
private void listBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
private void categoryComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
}
}
我的问题是如何将Inventory
的结果从MainWindow
传递给InventoryWindow
。
答案 0 :(得分:5)
你可以在构造函数中传递,
InventoryWindow wnd = new InventoryWindow(Inventory);
wnd.ShowDialog();
然后,
public InventoryWindow(List<Ingredient> inputList)
{
}