c语⾔中item的⽤法,c中listview的⽤法
下⾯⼩编就跟你们详细介绍下c中listview的⽤法的⽤法,希望对你们有⽤。
c中listview的⽤法的⽤法如下:
ListView是个较为复杂的控件
⽹上教程写的很乱,C#中⽂资料太匮乏了,⼩⽩叔叔觉得有必要⾃⼰出⼀份了。
1.定义
把它拽进来,系统会⾃动在Designer.cs⾥添加⼀个  this.listView1 = new System.Windows.Forms.ListView();
2.初始化,确定模式,确定列
InitializeComponent()⾥系统⾸先⾃动完成对它的初始化操作
⽽⽤户⾃定义的初始化操作我建议写在Form构造函数⾥跟在InitializeComponent()后⾯。
原因是⼀旦listView有变动,系统⾃动调整InitializeComponent()内容,可能会⾃动删除掉⽤户写的部分。
this.listView1.Columns.Add("学⽣序号");
this.listView1.Columns.Add("学⽣姓名");
this.listView1.Columns.Add("学⽣学号");
这些是主要的,确定⼀共⼏个列
this.listView1.View = System.Windows.Forms.View.Details;
如果不写这句,那么加的列压根显⽰不出来。必须写。
我们先研究Details模式下的ListView⽤法,要这样对listView的View属性赋值。
很多教程都直接写this.listView1.View =View.Details;
尽管using System.Windows.Forms 但不管⽤。还是写全吧。
System.Windows.Forms.View是个枚举 public enum View;
LargeIcon 每个项都显⽰为⼀个最⼤化图标,在它的下⾯有⼀个标签。
Details 每个项显⽰在不同的⾏上,并带有关于列中所排列的各项的进⼀步信息。最左边的列包含⼀个⼩图标和标签,后⾯的列包含应⽤程序指定的⼦项。列显⽰⼀个标头,它可以显⽰列的标题。⽤户可以在运⾏时调整各列的⼤⼩。
SmallIcon 每个项都显⽰为⼀个⼩图标,在它的右边带⼀个标签。
List 每个项都显⽰为⼀个⼩图标,在它的右边带⼀个标签。各项排列在列中,没有列标头。
Tile 每个项都显⽰为⼀个完整⼤⼩的图标,在它的右边带项标签和⼦项信息。显⽰的⼦项信息由应⽤程序指定。此视图仅在下⾯的平台上受⽀持:Windows XP 和 Windows Server 2003 系列。在之前的操作系统上,此值被忽略,并且 ListView 控件在 LargeIcon 视图中显⽰。
listView1.FullRowSelect = true;
this.listView1.GridLines = true;
listView1.LabelEdit = true;
// Allow the user to rearrange columns.
listview控件在哪里listView1.AllowColumnReorder = true;
// Display check boxes.
listView1.CheckBoxes = true;
listView1.Sorting = SortOrder.Ascending;
//Create three items and three sets of subitems for each item.
另外还有很多⾃定义属性可以配,什么选中啦,线条啦,⾃⼰试试吧
默认的列宽不⼤,标题头显⽰总不全
listView1.Columns[0].Width = 100;
listView1.Columns[1].Width = 100;
Columns数组本⾝可以引⽤每个列
3. 增加⾏
增加⾏操作主要分成两种,⼀种是直接字符串添加,⼀种是借助ListViewItem对象添加
⼀.直接添加法
this.listView1.Items.Add("A1");
这是指给这个控件表添加⼀个新的⾏,同时把新⾏的第⼀列数据设为A1,此时这个新⾏内的元素集合就是this.listView1.Item[0]
this.listView1.Items[0].SubItems.Add("A2");
这是给刚添加的第⼀⾏,也就是this.listView1.Item[0]添加第⼆列数据A2.如果说Items在⾏的层次增加,Item[i].SubItems才真正对应单元格操作。
this.listView1.Items[0].SubItems.Add("A3");
此时第⼀⾏添加⼯作结束,⽩叔叔告你,第⼀⾏内容为 A1---A2---A3
this.listView1.Items.Add("B1");  此时再Add,相当于加了第⼆⾏数据,同时添加了第⼆⾏第⼀列的单元格内容。
this.listView1.Items[1].SubItems.Add("B2"); Items表⽰⾏,所以第⼆⾏就是Items[1],⾏标从0起始。
this.listView1.Items[1].SubItems.Add("B3");
第⼆⾏结束,内容B1---B2---B3
⼆.ListViewItem间接添加法。
⽅法是先创建⼀个⾏对象
再把这个⾏对象添加给this.listView1.Items
ListViewItem li的初始化⼜有两种⽅法,⼤同⼩异
⼀种是
ListViewItem li=new ListViewItem("A1");
另⼀种是
ListViewItem li=new ListViewItem();
li.Text="A1";
作⽤是相同的,⽩叔叔不骗你。
都是初始化⼀个“⾏对象”,同时把这个⾏对象的第⼀列单元格初始化为"A1"
li.SubItems.Add("abc");
li.SubItems.Add("cde");
然后把第⼆列和第三列内容加上。
this.listView1.Items.Add(li); 这句话在前⼏句话之前也⾏,之后也⾏
可以先加进listView再添加⼦项,也可以都加全了⼦项再加进listView
li可以复⽤,不断初始化成新的⾏进⾏添加。
关于项的选取和数据的采集
⾸先,现阶段ListView项的选取分成两类
⼀种是⽤左键选取,适⽤的⽅法是SelectedItems和SelectedIndices
另⼀种是通过复选框勾选的选取CheckedItems我没⽤过,暂时不讨论,但事实上类同第⼀种
左键选取
1.⾸先要判断有没有项被选中变蓝,如果不判断那么⽤到SelectedItem[i]时会因为没有合适结果报错。
if (this.listView1.SelectedItems.Count > 0)
2.  SelectedItems是获取选中的⾏的集合,也就是说⽀持多⾏选择,它是多⾏的集合。
这⾥的索引[0]并不是指原列表的第⼀⾏,⽽是将全体被选中⾏当做⼀个集合,在被选中⾏中的第⼀被选⾏。此时返回的是该⾏第⼀列的单元格内容。
⽤SubItems[0]两者得到的结果是⼀样的,也是第⼀被选⾏的第⼀列。
上⾯是第⼀被选⾏的第⼆列,以此类推。
3.  SelectedIndices是返回选中⾏的索引值int
this.listView1.SelectedIndices[i]也是将选中⾏当做整体,⽤i去定位。