要创建一个新DataCreate
对象并将其添加到DataTableManager
对象SchoolInfo
列表中,您需要执行以下操作:
DataTableManager manager = new DataTableManager();
DataCreate data = new DataCreate();
data.LastName = TextBox1.Text;
data.ID = TextBox2.Text;
manager.SchoolInfo.Add(data);
但是,我应该指出,将其声明SchoolInfo
为一种List<Object>
属性是一种不好的做法。将其声明为List<DataCreate>
.
要将 DataCreate 对象从 DataCreate 对象本身添加到列表中,您需要执行以下操作:
manager.SchoolInfo.Add(this);
DataTableManager 不是一个对象,它是一种类型。您必须实例化它才能创建一个对象(就像我调用 时所做的那样new DataTableManager
)。或者,您可以将其设为静态类,这样就没有需要实例化的对象,并且您可以通过其类型名称(例如DataTableManager.SchoolInfo.Add(...)
)直接访问它的成员,但这不是您当前定义它的方式。
但是,我完全不建议按照您的方式做事。拥有全局变量从来都不是一个好主意。相反,如果表单需要访问 DataTableManager 对象,它应该请求它(通过将一个传递给表单上的构造函数的参数,或者通过在表单上设置公共属性,或者通过调用某种窗体上的公共初始化方法)。您必须在某处显示这些 DataCreate 表单的代码。正是该代码所在的类应该实例化管理器并将其提供给表单。
但是,通常您不希望存储对所有表单的引用。通常,您只想存储输入的数据。为此,您需要创建一个没有功能的新类,只是数据的公共属性。然后让表单返回其中一个对象,然后让中心类显示表单,获取返回的数据并将其添加到管理器。
例如:
public class DataManager
{
public List<StudentData> Students { get; set; }
// etc.
}
public class StudentData
{
public string FirstName { get; set; }
public string LastName { get; set; }
// etc.
}
public class StudentEntryDialog : Form
{
public StudentData StudentData { get; set; }
// ... code to call storeData method when user chooses to do so ...
private void storeData()
{
StudentData = new StudentData();
StudentData.FirstName = TextBox1.Text;
StudentData.LastName = TextBox2.Text;
// etc.
}
}
public class CentralCodeOfSomeSort
{
private DataManager manager = new DataManager();
private showStudentEntry()
{
StudentEntryDialog dialog = new StudentEntryDialog();
dialog.ShowDialog();
if (dialog.StudentData != null)
manager.Students.Add(dialog.StudentData);
}
}