解决方案是简单地将列表设为静态。
我在类A中有代码。在A类中,我有一个按钮,它运行代码将对象添加到B类的列表中。
在类AI中,然后有另一个按钮来打开一个不同的表单,类C.在类C中,我有一个按钮,它运行与A类中的按钮运行完全相同的代码,但该对象只会在列表中添加到列表中我单击A类中的按钮,C类中的按钮似乎没有做任何事情
A类还包含一个ListBox,它显示了B类列表的内容,尽管我认为这不会影响问题。
A类:
classB manager = new classB();
private void btnAddItem_Click(object sender, EventArgs e)
{
Contact cnt = new Contact();
manager.AddToList(cnt);
}
private void btnOpenFormC_Click(object sender, EventArgs e)
{
classC newForm= new classC();
newForm.Show();
}
B组:
public List<Customer> CustomerList = new List<Customer>();
public void AddToList(Contact inData)
{
Customer cm = new Customer();
cm.Contact = inData;
cm.Id = GetId();
CustomerList.Add(cm);
}
C类:
classB manager = new classB();
private void btnAddItem_Click(object sender, EventArgs e)
{
Contact cnt = new Contact();
manager.AddToList(cnt);
}
所以我的问题是:如何制作它以便我可以从A类和C类的列表中添加对象?
答案 0 :(得分:0)
这可以通过多种方式解决
第一种方式 - Singleton
A类
var manager = ClassB.Instance;
private void btnAddItem_Click(object sender, EventArgs e)
{
Contact cnt = new Contact();
manager.AddToList(cnt);
}
B类
public class ClassB {
private static ClassB _Instance;
public static ClassB Instance {
get {
if(_Instance==null) _Instance = new ClassB();
return _Instance;
}
}
public List<Customer> CustomerList = new List<Customer>();
public void AddToList(Contact inData)
{
Customer cm = new Customer();
cm.Contact = inData;
cm.Id = GetId();
CustomerList.Add(cm);
}
}
C类
var manager = ClassB.Instance;
private void btnAddItem_Click(object sender, EventArgs e)
{
Contact cnt = new Contact();
manager.AddToList(cnt);
}
第二种方式 - 静态客户列表
A类
var manager = new ClassB();
private void btnAddItem_Click(object sender, EventArgs e)
{
Contact cnt = new Contact();
manager.AddToList(cnt);
}
B类
public class ClassB {
public static List<Customer> CustomerList = new List<Customer>();
public void AddToList(Contact inData)
{
Customer cm = new Customer();
cm.Contact = inData;
cm.Id = GetId();
CustomerList.Add(cm);
}
}
C类
var manager = new ClassB();
private void btnAddItem_Click(object sender, EventArgs e)
{
Contact cnt = new Contact();
manager.AddToList(cnt);
}
我个人更喜欢第一种方式,因为新实例可能会消耗额外的内存分配。希望这可以帮到你。
答案 1 :(得分:0)
首先,我假设ClassC
和manager
是表格?
在按钮点击处理程序中打开ClassC
表单,只需将public class ClassA : Form
{
private classB manager = new classB();
...
private void btnAddItem_Click(object sender, EventArgs e)
{
Contact cnt = new Contact();
manager.AddToList(cnt);
}
private void btnOpenFormC_Click(object sender, EventArgs e)
{
ClassC newForm= new ClassC(manager);
newForm.Show();
}
}
成员添加到public class ClassC : Form
{
private ClassB manager;
public ClassC(ClassB manager)
{
this.manager = manager;
...
}
...
private void btnAddItem_Click(object sender, EventArgs e)
{
Contact cnt = new Contact();
manager.AddToList(cnt);
}
}
的构造函数中:
ClassA的:
templates
ClassC:
deploy