【发布时间】:2014-03-03 06:05:23
【问题描述】:
我正在设计一个数据库来保存从文本文件中读取的员工列表。 我有两种形式,第一种形式(frmManager)充当浏览列表的视图,我有下一个和上一个按钮,我可以滚动列表中的员工。另一种形式(frmAdd),可以将新员工添加到列表中。我的问题是,当我更新 List 时,如何在 frmManager 中更新它?当我添加一个新员工时,他们的属性被写入文本文件,但我必须重建项目以显示更新的列表。 添加员工的文件:
public class EmployeeDB
{
public List<Employee> employees;
public static EmployeeDB instance;
public static EmployeeDB Instance
{
get
{
if (instance == null)
{
instance = new EmployeeDB();
instance.populate();
}
return instance;
}
}
public EmployeeDB()
{
employees = new List<Employee>();
}
public void populate()
{
string[] parts;
foreach (string line in File.ReadAllLines("StaffList.txt"))
{
parts = line.Split(',');
employees.Add(new Employee(parts[0], parts[1], parts[2], parts[3], int.Parse(parts[4]), int.Parse(parts[5])));
}
}
}
员工类只包含一个构造函数来添加他们的详细信息。 添加新员工的表单
public partial class frmAdd : Form
{
EmployeeDB employee;
int grade;
public frmAddEmployee()
{
employee = EmployeeDB.Instance;
InitializeComponent();
}
private void btnCreate_Click(object sender, EventArgs e)
{
System.IO.StreamWriter file = new System.IO.StreamWriter("StaffList.txt", true);
foreach (Employee em in employee.employees) //To avoid username clashes
{
if (em.username == txtUsername.Text)
{
file.WriteLine(txtFName.Text + "," + txtLName.Text + "," + txtUsername.Text + employee.employees.Count()
+ "," + txtPassword.Text + "," + checkedButton().ToString() + ","
+ 0.ToString(), Environment.NewLine);
}
else
{
file.WriteLine(txtFName.Text + "," + txtLName.Text + "," + txtUsername.Text
+ "," + txtPassword.Text + "," + checkedButton().ToString() + ","
+ 0.ToString(), Environment.NewLine);
}
file.Close();
MessageBox.Show("Employee successfully added");
return;
}
我曾尝试调用 EmployeeDB 文件,希望它会重新填充但无济于事。任何帮助将不胜感激。
【问题讨论】:
-
为什么不使用实际的数据库?
-
我最初尝试了一个数据库,但我在大学网络上工作,它似乎不喜欢与数据库链接,即使它们是本地的
标签: c# winforms list streamwriter