C# 将客户添加到程序中

C# 将客户添加到程序中,c#,C#,我想让我的程序知道已经添加了一个新客户我不知道如何在CustomerManager类和表单类之间建立链接,我已经完成了所需的代码,请看这里 表格一 if (customerframe.ShowDialog() == DialogResult.OK) //if button OK is clicked then value will be inserted { listviewitem = new ListViewItem("1");

我想让我的程序知道已经添加了一个新客户我不知道如何在CustomerManager类和表单类之间建立链接,我已经完成了所需的代码,请看这里

表格一

if (customerframe.ShowDialog() == DialogResult.OK) //if button OK is clicked then value will be inserted
            {
                listviewitem = new ListViewItem("1");
                listviewitem.SubItems.Add(customerframe.firstName);
                listviewitem.SubItems.Add(customerframe.lastName);
                listviewitem.SubItems.Add(customerframe.zipcode);
                //there will be more here later

               this.listView1.Items.Add();
表格2

CustomerManager类

class CustomerManager
    {
        private Customer CustomerIN;
        private List<Customer> customers = new List<Customer>();
        private int nrOfCustomers;
        private int id = 100;

        public CustomerManager()
        {
          throw new System.NotImplementedException();
        }

        public int Count
        {
            get
            {
              return nrOfCustomers;
            }
            set
            {
                foreach (Customer customer in customers)
                    nrOfCustomers++;
            }
        }

        public int GetNewID
        {
            get
            {
                return id;
            }
            set
            {
            }
        }

        public bool AddCustomer()
        {
                if (customers != null)
                {
                     foreach (Customer customer in customers)
                     {
                    customers.Add(customer);
                    CustomerIN.ID = id++;
                     }
                    return true;
                }
                else return false;
            }

        public bool ChangeCustomer()
        {
            throw new System.NotImplementedException();
        }

        public bool DeleteCustomer()
        {
            if (customers != null)
            {
                foreach (Customer customer in customers)
                {
                    customers.Remove(customer);
                }
                return true;
            }
            else return false;
        }

        public Customer GetCustomer()
        {
            throw new System.NotImplementedException();
        }

        public void TestValues()
        {
            throw new System.NotImplementedException();
        }
    }
}
类CustomerManager
{
私人客户客户;
私有列表客户=新列表();
私人客户;
私有int id=100;
公共CustomerManager()
{
抛出新系统。NotImplementedException();
}
公共整数计数
{
得到
{
客户回报率;
}
设置
{
foreach(客户中的客户)
nrOfCustomers++;
}
}
公共整数GetNewID
{
得到
{
返回id;
}
设置
{
}
}
公共bool AddCustomer()
{
如果(客户!=null)
{
foreach(客户中的客户)
{
客户。添加(客户);
CustomerIN.ID=ID++;
}
返回true;
}
否则返回false;
}
公共bool ChangeCustomer()
{
抛出新系统。NotImplementedException();
}
公共bool DeleteCustomer()
{
如果(客户!=null)
{
foreach(客户中的客户)
{
客户。删除(客户);
}
返回true;
}
否则返回false;
}
公共客户GetCustomer()
{
抛出新系统。NotImplementedException();
}
公共void TestValues()
{
抛出新系统。NotImplementedException();
}
}
}

我希望上面的类与我程序中的表单交互,因为我认为我的代码非常混乱。我该怎么做

您应该使用事件来通知smth对象状态的变化

class Form1
  : Form
{
  private CustomerManager manager;

  public Form1()
  {
    ...

    manager = new CustomerManager();
    manager.CustomerAdded += OnCustomerAdded;

    ...
  }

  private void OnCustomerAdded(object source, CustomerEventArgs eventArgs)
  {
    var listviewitem = new ListViewItem(eventArgs.Customer.FirstName);
    listviewitem.SubItems.Add(eventArgs.Customer.LastName);

    this.listView1.Items.Add(listviewitem);
  }
}

class CustomerEventArgs
  : EventArgs
{
  public readonly Customer Customer;

  public CustomerEventArgs(Customer customer)
  {
    Customer = customer;
  }
}

class Customer
{
  public string FirstName{get;set;}
  public string LastName{get;set;}
}

class CustomerManager
{
  private List<Customer> list = new List<Customer>();

  public event EventHandler<CustomerEventArgs> CustomerAdded;
  private void OnCustomerAdded(Customer customer)
  {
     var handler = CustomerAdded;
     if(handler != null)
     {
       handler(this, new CustomerEvenetArgs(customer));
     }
  }

  public event EventHandler<CustomerEventArgs> CustomerDeleted;
  private void OnCustomerDeleted(Customer customer)
  {
     var handler = CustomerDeleted;
     if(handler != null)
     {
       handler(this, new CustomerEvenetArgs(customer));
     }
  }

  public int Count
  {
     get
     {
       return list.Count;
     }
  }

  public bool AddCustomer(Customer customer)
  {
    if(list.Any(c => c.FirstName == customer.FirstName && c.LastName == customer.LastName))
    {
      return false;
    }

    list.Add(customer);
    OnCustomerAdded(customer);
    return true;
  }

  public bool DeleteCustomer(Customer customer)
  {
    var currentCustomer = list.FirstOrDefault(c => c.FirstName == customer.FirstName && c.LastName == customer.LastName);
    if(currentCustomer != null)
    {
       list.Remove(currentCustomer);
       OnCustomerDeleted(currentCustomer);
       return true;
    }

    return false;
  }
}
类格式1
:表格
{
私人客户经理;
公共表格1()
{
...
manager=新的CustomerManager();
manager.CustomerAdded+=OnCustomerAdded;
...
}
添加客户时的私有void(对象源、CustomerEventArgs事件参数)
{
var listviewitem=新的listviewitem(eventArgs.Customer.FirstName);
listviewitem.SubItems.Add(eventArgs.Customer.LastName);
this.listView1.Items.Add(listviewitem);
}
}
类CustomerEventArgs
:EventArgs
{
公共只读客户;
公共客户目标(客户)
{
客户=客户;
}
}
类客户
{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
}
类CustomerManager
{
私有列表=新列表();
自定义的公共事件事件处理程序;
添加了一个客户的私有void(客户)
{
var handler=CustomerAdded;
if(处理程序!=null)
{
经办人(此,新客户维尼塔(客户));
}
}
自定义删除的公共事件事件处理程序;
删除客户时的专用作废(客户)
{
var handler=CustomerDeleted;
if(处理程序!=null)
{
经办人(此,新客户维尼塔(客户));
}
}
公共整数计数
{
得到
{
返回列表。计数;
}
}
公共bool AddCustomer(客户)
{
if(list.Any(c=>c.FirstName==customer.FirstName&&c.LastName==customer.LastName))
{
返回false;
}
列表。添加(客户);
一旦添加了客户(customer);
返回true;
}
公共布尔删除客户(客户)
{
var currentCustomer=list.FirstOrDefault(c=>c.FirstName==customer.FirstName&&c.LastName==customer.LastName);
如果(currentCustomer!=null)
{
列表。删除(当前客户);
OnCustomerDeleted(当前客户);
返回true;
}
返回false;
}
}

可能没有,我看到您在;但是你从来没有“新”过,就像我们说的那样,这种情况在哪里。。这可能会触发错误。我将尝试并解释,在不编写所有代码的情况下,+点表示努力有时一个示例是最好的描述。如果他不复制粘贴的话,他会在阅读的过程中学习。正如你所说,样本是最好的,我同意。谢谢你花时间在我身上,这意味着很多!但我得到错误“非泛型类型”System.Event.Args“不能与类型参数一起使用”我已修复,请调查更改。
class Form1
  : Form
{
  private CustomerManager manager;

  public Form1()
  {
    ...

    manager = new CustomerManager();
    manager.CustomerAdded += OnCustomerAdded;

    ...
  }

  private void OnCustomerAdded(object source, CustomerEventArgs eventArgs)
  {
    var listviewitem = new ListViewItem(eventArgs.Customer.FirstName);
    listviewitem.SubItems.Add(eventArgs.Customer.LastName);

    this.listView1.Items.Add(listviewitem);
  }
}

class CustomerEventArgs
  : EventArgs
{
  public readonly Customer Customer;

  public CustomerEventArgs(Customer customer)
  {
    Customer = customer;
  }
}

class Customer
{
  public string FirstName{get;set;}
  public string LastName{get;set;}
}

class CustomerManager
{
  private List<Customer> list = new List<Customer>();

  public event EventHandler<CustomerEventArgs> CustomerAdded;
  private void OnCustomerAdded(Customer customer)
  {
     var handler = CustomerAdded;
     if(handler != null)
     {
       handler(this, new CustomerEvenetArgs(customer));
     }
  }

  public event EventHandler<CustomerEventArgs> CustomerDeleted;
  private void OnCustomerDeleted(Customer customer)
  {
     var handler = CustomerDeleted;
     if(handler != null)
     {
       handler(this, new CustomerEvenetArgs(customer));
     }
  }

  public int Count
  {
     get
     {
       return list.Count;
     }
  }

  public bool AddCustomer(Customer customer)
  {
    if(list.Any(c => c.FirstName == customer.FirstName && c.LastName == customer.LastName))
    {
      return false;
    }

    list.Add(customer);
    OnCustomerAdded(customer);
    return true;
  }

  public bool DeleteCustomer(Customer customer)
  {
    var currentCustomer = list.FirstOrDefault(c => c.FirstName == customer.FirstName && c.LastName == customer.LastName);
    if(currentCustomer != null)
    {
       list.Remove(currentCustomer);
       OnCustomerDeleted(currentCustomer);
       return true;
    }

    return false;
  }
}