在做了前面的演练7-3之后,我以为后面的习题应该问题不大,依样画葫芦也能弄出来,结果说明,我想多了,两个不容的控件完全不能一概而论。前面用的时DataGirdView,后面则是的listview。对于这个玩意,我应该不陌生,在前面的动态控件,做图片轮显的时候就遇到,当时还没有搞出来。网上说做数据表现和存放用DataGirdView是比较好的,再加上我对C#的控件不是特别熟悉,很多都不会用,所以在listview上花了一些时间去了解它的用法。
OK,言归正传,首先要使用这个listview控件,就必须了解它是如何往里面添加行列的,如何显示出来。当初我试想跟着演练照着来,结果发现listview没有直接布局的方法,不能像DataGirdView直接给column命名,不能直接通过BindingSource绑定数据源。所以只能按照它给定的其他属性和方法来弄。
1.定义一个列名,并把这个列添加到listview里面
ColumnHeader ch = new ColumnHeader();
OK,言归正传,首先要使用这个listview控件,就必须了解它是如何往里面添加行列的,如何显示出来。当初我试想跟着演练照着来,结果发现listview没有直接布局的方法,不能像DataGirdView直接给column命名,不能直接通过BindingSource绑定数据源。所以只能按照它给定的其他属性和方法来弄。
1.定义一个列名,并把这个列添加到listview里面
ColumnHeader ch = new ColumnHeader();
ch.Text = "姓名";
ch.Width = 120;
this.listview_show_hgy.Columns.Add(ch);
2.然后添加一个Item(首项),和若干的SubItem(子项)
lvi.Text = list[i].Name;//!!!
3.最后将listview设置成Details模式即可
this.listview_show_hgy.View = System.Windows.Forms.View.Details;
this.listview_show_hgy.Columns.Add(ch);
2.然后添加一个Item(首项),和若干的SubItem(子项)
lvi.Text = list[i].Name;//!!!
lvi.SubItems.Add(list[i].Chinese);
this.listview_show_hgy.Items.Add(lvi);
在上面的代码里有一个i,是因为要添加的不可能只有一项,所以用循环的方式,i< list.count,在这里也要忍不住 吐槽一下,存储的方式使用list,当时想了好久怎么把list中存放的数据读出来,结果两个小时过了,试了若干方 法,结果是,实例名.属性 的方法,瞬间感觉不好了。
this.listview_show_hgy.Items.Add(lvi);
3.最后将listview设置成Details模式即可
this.listview_show_hgy.View = System.Windows.Forms.View.Details;
到这里,一个list就建好了,是不是很简单,
接着在窗体载入时给list放一个自定义类的对象集合进去就行了,就像这样
StuInfo zhang = new StuInfo("张三", "80", "95", null, "河南省郑州市", "13323456789");
stulist.Add(zhang);
FillGrid(stulist); //在FillGrid方法中显示listview
接着就是按钮的事件问题了,这里有几个困惑我的难点:
1.点击主窗体“添加”,隐藏主窗体,显示副窗体
2.点击副窗体的“添加”,给主窗体的listview添加一条记录
3.点击副窗体“返回”,隐藏副窗体,显示主窗体,这时候,主窗体要有之前添加的记录
4.点击主窗体“删除”,删除listview一条记录
①这里面最好解决的是4,之前我用list的romove方法没有搞出来,网上查了下原来是要这么用
//判断listview有被选择的项
if (listview_show_hgy.SelectedItems.Count > 0)
{
&