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