我在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公佈前申報項目。在深入研究代碼之前,你應該學會更多。如果這對我的回答有幫助,請將其標記爲正確答案。 –