【发布时间】:2017-06-09 21:01:47
【问题描述】:
我的 MainForm 包含两个只读文本框和两个按钮,它们可以打开用户想要显示的多个 PizzaCreatorForms 实例,而其他按钮显示一个 PizzaOrdersListViewForm 实例。两个只读文本框跟踪显示了多少个 PizzaCreatorForm 实例(这部分有效),另一个跟踪正在创建的项目数量(这也有效)。
我应该补充一点,PizzaCreatorForm 创建的每个对象都添加到 List 中,就像在 PizzaOrdersListViewFrom listView.Items 控件中一样。在 MainForm 和 PizzaOrderListViewForm 内还有一个清除按钮,用于清除 List。
我的代码有效,但我遇到了两个问题。
每当在列表中添加一个新对象时,它都会从 0 开始,而我希望它从 1 开始。
每当我使用 PizzaOrderListViewForm 中的清除按钮清除 List 时,listview 控件项都会被清除,但文本框显示的数字相同
这是我尝试用于#2 的自定义事件:
主窗体
public partial class Form1 : Form
{
public static List<Pizza> pizzaList = new List<Pizza>();
public List<Pizza> PizzaList
{
get { return pizzaList; }
set { pizzaList = value; }
}
//Where PizzaOrdersListViewForm is instantiated
private void displayOrdersToolStripMenuItem_Click(object sender, EventArgs e)
{
PizzaOrdersListViewForm orderListV = new PizzaOrdersListViewForm();
}
//Where PizzaCreatorForm is instantiated
private void newPizzaOrder_Click(object sender, EventArgs e)
{
PizzaCreatorForm pizzaForms = new PizzaCreatorForm(this);
pizzaForms.PizzaInList += PizzaInListHandler;
pizzasCreatedCounterTextBox.TextChanged += PizzaInListHandler;
}
public void PizzaInListHandler(object sender, EventArgs e)
{
pizzasCreatedCounterTextBox.Text = pizzaList.Count.ToString();
}
public void ClearMainListChangeHandler(object sender, EventArgs e)
{
pizzaList.Clear();
}
}
PizzaCreatorForm
public partial class PizzaCreatorForm : Form
{
public EventHandler PizzaInList;
public Pizza Order
{
//Code that assigns Pizza class member variables to control values
}
Form1 MainForm = null;
public PizzaCreatorForm(Form1 mForm)
{
InitializeComponent();
MainForm = mForm
}
private void orderNewPizaaToolStripButton_Click(object sender, EventArgs e)
{
if(PizzaInList != null)
{
PizzaInList(this, new EventArgs());
}
MainForm.PizzaList.Add(Order);
Order = new Pizza();
}
}
PizzaOrdersListViewForm
public partial class PizzaOrdersListViewForm : Form
{
public EventHandler ClearMainList;
Form1 mainForm = null;
public PizzaOrdersListViewForm(Form1 TheMain)
{
InitializeComponent();
mainForm = TheMain;
}
private void clearToolStripButton_Click(object sender, EventArgs e)
{
if(ClearMainList != null)
{
ClearMainList(this, new EventArgs());
}
ClearMainList += mainForm.ClearMainListChangeHandler;
pizzaListView.Items.Clear();
}
}
【问题讨论】:
标签: c# windows winforms windows-applications