求教:关于 listView 绑定 及 方法调用问题
求教:关于 listView 绑定 及 方法调用问题传上偶的代码。
我的问题是:
在 FrmEdit.cs 中调用 FrmList.cs 的 ListBind( ),但却在 FrmList.cs 里的 ListBind( ) 之 lv.Text = emp
[i].ID.ToString (); 中 出现“未将对象引用设置到对象的实例”问题。
求老师大侠,问题是出现在哪里?
拜谢老师大侠先!!!
下面是我的代码:
---------------------
namespace TestListView
{
public partial class FrmList : Form
{
Employee[] emp = new Employee[3];
void InitData()
{
emp [0]= new Employee ();
emp[0].ID = 01;
emp[0].Name = "张三";
emp[0].Age = 22;
emp[1] = new Employee();
emp[1].ID = 02;
emp[1].Name = "王五";
emp[1].Age = 28;
emp[2] = new Employee();
emp[2].ID = 03;
emp[2].Name = "李四";
emp[2].Age = 26;
}
public FrmList()
{
InitializeComponent();
}
private void FrmList_Load(object sender, EventArgs e)
{
InitData();
ListBind();
}
public void ListBind( )
{
listView1.Items.Clear();
for (int i =0; i<emp.Length ; i++)
{
ListViewItem lv = new ListViewItem();
lv.Text = emp[i].ID.ToString ();
//lv.SubItems.Add(emp[i].ID.ToString ());
lv.SubItems.Add (emp[i].Name );
lv.SubItems.Add(emp[i].Age.ToString () );
lv.SubItems.Add(emp[i].Score.ToString ());
listView1.Items.Add(lv);
}
}
private void listView1_doubleClick(object sender, EventArgs e)
{
FrmEdit edit = new FrmEdit();
edit.Show ();
}
}
}
-------------------------
namespace TestListView
{
public partial class FrmEdit : Form
{
public FrmEdit()
{
InitializeComponent();
}
private void FrmEdit_Load(object sender, EventArgs e)
{
}
private void btnSave_Click(object sender, EventArgs e)
{
Employee empList = new Employee ();
empList.ID =Convert.ToInt32(txtID.Text.Trim());
empList.Name = txtName.Text.Trim();
empList.Age = Convert.ToInt32 (txtAge.Text.Trim());
empList.Score = Convert.ToInt32(txtScore.Text.Trim());
FrmList list = new FrmList();
list.ListBind( );
}
}
}
-----------------------
namespace TestListView
{
public class Employee
{
public int ID {get;set; }
public string Name { get; set; }
public int Age { get; set; }
public int Score { get; set; }
}
}
--------------------编程问答--------------------
private void btnSave_Click(object sender, EventArgs e)
{
Employee empList = new Employee ();
empList.ID =Convert.ToInt32(txtID.Text.Trim());
empList.Name = txtName.Text.Trim();
empList.Age = Convert.ToInt32 (txtAge.Text.Trim());
empList.Score = Convert.ToInt32(txtScore.Text.Trim());
FrmList list = new FrmList();
list.ListBind( ); //這裡直接調用list.ListBind()並未初始化ListBind()方法里的emp
}
--------------------编程问答-------------------- 感谢 1楼 wj150158472 的回复!
“未初始化ListBind()方法里的emp”---- 如何初始化呢??
我是刚刚初学的菜鸟,还请您多多指点,谢谢啦!! --------------------编程问答--------------------
你指的是下面这段代码吗?:
public partial class FrmList : Form
{
Employee[] emp = new Employee[3];
void InitData()
{
emp [0]= new Employee ();
emp[0].ID = 01;
emp[0].Name = "张三";
emp[0].Age = 22;
emp[1] = new Employee();
emp[1].ID = 02;
emp[1].Name = "王五";
emp[1].Age = 28;
emp[2] = new Employee();
emp[2].ID = 03;
emp[2].Name = "李四";
emp[2].Age = 26;
}
如果是,上面的代码就在ListBind()方法的上面,也就是在class FrmList 的顶部。
--------------------编程问答-------------------- FrmList list = new FrmList();
//初始化emp数组中的数据InitData变成公共方法
list.InitData();
list.ListBind( );
或者list.Show();执行FrmList中的Load事件 --------------------编程问答--------------------
感谢 lww5351568 的回复和指导!
但现在的问题是:
1.用您的第一个的办法,尝试后,点击“保存”,没有任何反应,也就是说 页面没有反应,原来的listView 也没有发生更新变化。
2.用您的第二个办法,尝试后,点击“保存”,跳出listView页面,但没有发生更新变化,原来的字段值依旧。
咋办呢? --------------------编程问答-------------------- 你是要显示什么内容????FrmEdit 这个界面输入的值吗?但是你根本没有把这些数据传递给那个temp数组里面啊 --------------------编程问答--------------------
“FrmEdit 这个界面输入的值吗?” ---- 是的,也就是说,把新输入的值保存下来。
比如说,第一行的值,我重新给值,点击“保存”后,第一行的值就变成新输入的值。
您说的“temp数组”是指的"Employee[] emp = new Employee[3];",吗?
如果不是,俺就不懂了。俺是菜鸟新手,还需您帮助指导! --------------------编程问答-------------------- 那就在FrmList写个publice void SetData(Employee emp){
emp[0]=emp;
} 方法 很简单有很多方法
然后在保存按钮事件中
private void btnSave_Click(object sender, EventArgs e)
{
Employee empList = new Employee ();
empList.ID =Convert.ToInt32(txtID.Text.Trim());
empList.Name = txtName.Text.Trim();
empList.Age = Convert.ToInt32 (txtAge.Text.Trim());
empList.Score = Convert.ToInt32(txtScore.Text.Trim());
FrmList list = new FrmList();
list.InitData();
list.SetData(emplist);
list.ListBind( );
list.Show();
}
还有去掉FrmList中的Load事件的代码 解决的方法很多 自己多调试一下就明白了
--------------------编程问答-------------------- 非常感谢 lww5351568 的指导帮助!!!
我试试。
补充:.NET技术 , C#