C# 更新列表中项目的文本框控件计数<&燃气轮机;当它';s使用自定义事件C清除#

C# 更新列表中项目的文本框控件计数<&燃气轮机;当它';s使用自定义事件C清除#,c#,windows,winforms,windows-applications,C#,Windows,Winforms,Windows Applications,我有一个主窗体,它包含两个只读文本框和两个按钮,可以打开用户想要显示的PizzaCreatorForms的任意多个实例,其他按钮显示PizzaOrdersListViewForm的一个实例。这两个只读文本框跟踪显示了多少PizzaCreatorForm实例(这部分有效),另一个跟踪创建了多少项(这部分也有效) 我应该补充一点,PizzaCreatorForm创建的每个对象都会添加到列表中,以及listView.Items控件中的PizzaOrdersListViews中。主窗体和PizzaOrd

我有一个主窗体,它包含两个只读文本框和两个按钮,可以打开用户想要显示的PizzaCreatorForms的任意多个实例,其他按钮显示PizzaOrdersListViewForm的一个实例。这两个只读文本框跟踪显示了多少PizzaCreatorForm实例(这部分有效),另一个跟踪创建了多少项(这部分也有效)

我应该补充一点,PizzaCreatorForm创建的每个对象都会添加到列表中,以及listView.Items控件中的PizzaOrdersListViews中。主窗体和PizzaOrderListViewForm中还有一个清除按钮,用于清除列表

我的代码可以工作,但我遇到了两个问题

  • 每当在列表中添加新对象时,当我希望它从1开始时,它从0开始

  • 每当我使用PizzaOrderListViewForm中的clear按钮清除列表时,listview控件项都会被清除,但文本框显示相同的数字

  • 这是我尝试用于#2的自定义事件:

    MainForm

        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();
           }
        }
    
        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();
           }
        }
    
        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();
    
           }
    
        }
    
    PizzaOrdersListViewForm

        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();
           }
        }
    
        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();
           }
        }
    
        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();
    
           }
    
        }
    

    我所要做的就是将PizzaOrdersListViewForm ClearMainList事件处理程序订阅到MainForm中DisplayOrdersTolsTripMenuItem\u Click方法中的自定义PizzaInListHandler方法

    private void displayOrdersToolStripMenuItem_Click(object sender, EventArgs e)
    {
         PizzaOrdersListViewForm orderListV = new PizzaOrdersListViewForm();
         orderListV.ClearMainList += ClearMainListChangeHandler;
         orderListV.ClearMainList += PizzaInListHandler;
    }
    
    我在比萨饼清单上发现了我的错误。当我应该选择返回列表中元素总数的计数时,我意外地使用了计数来计算每个项目的顺序