我在C#Windows窗体应用程序中有一个项目,在我的项目中我有2个屏幕,1 - ListView显示数据,2 - Formulary获取信息并放在ListView上,主要问题是,将信息从Form2传递到Form 1中。
我的逻辑:
问题:
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获取信息并传递给Form1 :(我获取信息并放入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的新手。
答案 0 :(得分:0)
您在非Form类中有一个ListViewItem(一个Windows窗体项),这是不可取的,您应该使用List项。 此外,您只想在主窗体中创建EmployeeDAO对象,并通过后者的构造函数与Register Form共享它。另一种方法是使用Singleton模式。
namespace Company
{
public partial class Register : Form
{
EmployeeDAO employeeDAO;
public Register(EmployeeDAO employeeDAO)
{
InitializeComponent();
this.employeeDAO = employeeDAO;
}
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);
}
}
}
namespace Company
{
class EmployeeDAO
{
List<Employee> Items {get; private set;}
public EmployeeDAO()
{
Items = new List<Employee>();
}
public void insert(Employee employee)
{
Items.Add(employee);
}
}
}
namespace Company
{
public partial class Main : Form
{
EmployeeDAO employeeDAO;
public Main()
{
InitializeComponent();
lstEmployee.View = View.Details;
lstEmployee.FullRowSelect = true;
lstEmployee.Columns.Add("ID", 150);
lstEmployee.Columns.Add("Nome", 150);
employeeDAO = new EmployeeDAO();
}
private void InsertEmployeesInListBox()
{
lstEmployee.Items.Clear();
foreach (var item in employeeDAO.Items)
{
string[] row = { item.idEmployee.ToString(), item.nameEmployee };
var listViewItem = new ListViewItem(row);
lstEmployee.Items.Add(listViewItem);
}
}
private void btnRegister_Click(object sender, EventArgs e)
{
Register register = new Register(employeeDAO);
register.Show();
this.Hide();
}
}
}
我希望这会有所帮助!!
答案 1 :(得分:0)
通过表单传递数据的主要思想是使控件的修改器公开使用,以便您可以以其他形式使用它然后就可以了 制作第二种形式和代码的对象,但无论如何看到这些链接,我希望它会帮助你
高级how to pass listview row data into another existing form
Accessing listview items from another form
c# Add listView items from another form