我在C#窗体应用程序中有一个项目,在我的项目中我有2个屏幕,1 - 用于显示数据的ListView,2 - 获取信息并将ListView ,主要问题是将信息从Form2传递给Form1。C# - 在两个窗体之间传递数据(Windows窗体应用程序)
我的逻辑:
- 获取对窗体2从用户信息传递给其他类
- 在Form1上与其他类获取信息,并添加ListView控件
问题:
- 对象种类
ListViewItem
返回null
窗体2:从表获取信息
namespace Company
{
public partial class Register : Form
{
EmployeeDAO employeeDAO = new EmployeeDAO();
public Register()
{
InitializeComponent();
}
private void btnRegister_Click(object sender, EventArgs e)
{
Employee employee = new Employee();
employee.idEmployee = Convert.ToInt16(this.txtId.Text);
employee.nameEmployee = this.txtName.Text;
employeeDAO.insert(employee);
}
}
}
我班DAO从Form2的获取信息,并传递到Form 1:(我得到的信息,并把一个ListViewItem并将其返回)
namespace Company
{
class EmployeeDAO
{
ListViewItem item = new ListViewItem();
public void insert(Employee employee)
{
string id;
string name;
id = Convert.ToString(employee.idEmployee);
name = employee.nameEmployee;
String[] row = { id, name };
item = new ListViewItem(row);
}
public ListViewItem read()
{
//This item are returning null
return item;
}
}
}
Form1显示ListView上的数据:(我得到ListViewItem对象并添加到ListView)
namespace Company
{
public partial class Main : Form
{
public Main()
{
InitializeComponent();
lstEmployee.View = View.Details;
lstEmployee.FullRowSelect = true;
lstEmployee.Columns.Add("ID", 150);
lstEmployee.Columns.Add("Nome", 150);
insert();
}
private void insert()
{
EmployeeDAO employeeDAO = new EmployeeDAO();
ListViewItem item = employeeDAO.read();
if (item == null)
{
//Always this block run
MessageBox.Show("No Item");
return;
}
else
{
MessageBox.Show("Item");
lstEmployee.Items.Add(item);
}
}
private void btnRegister_Click(object sender, EventArgs e)
{
Register register = new Register();
register.Show();
this.Hide();
}
}
}
有人可以解释如何做到这一点,如果是正确的方法? PS:在C#和OO上的新增功能。
我有一些疑问,为什么注册需要一个'EmployeeDAO'对象作为参数?我不能以'Main'的形式访问'foreach'上的'Items'?它还没有工作 –
因为每当您创建新实例时,EmployeeDAO都会设置一个新的员工列表。因此,不要使用空的Employee列表创建一个新的EmployeeDAO,而是将您创建的第一个EmployeeDAO传递给其他类,并将已有的数据列表重用到已有的员工列表。在班级EmployeeDAO公布前申报项目。在深入研究代码之前,你应该学会更多。如果这对我的回答有帮助,请将其标记为正确答案。 –