C#Listview控件使⽤实例
ListView我认为是种数据型的控件,以装载和展⽰数据为⽬的,当然也能展⽰图⽚,这个功能没有试过。这⾥讲⼀下ListView的第⼀次使⽤后的⼀些⼩结。
ListView⼀些设置与添加字段。
Lv1 = new ListView ( ) ; //实例化
Lv1.GridLines = true ; file://显⽰各个记录的分隔线
Lv1.FullRowSelect = true ; file://要选择就是⼀⾏
Lv1.View = View.Details ; file://定义列表显⽰的⽅式
Lv1.Scrollable = true ; file://需要时候显⽰滚动条控件的使用
Lv1.MultiSelect = false ; // 不可以多⾏选择
Lv1.HeaderStyle = ColumnHeaderStyle.Nonclickable ;// 针对数据库的字段名称,建⽴与之适应显⽰表头
设置列名称:
Lv1.Columns.Add ( "A" , 60 , HorizontalAlignment.Right ) ;
Lv1.Columns.Add ( "B" , 100 , HorizontalAlignment.Left ) ;
Lv1.Columns.Add ( "C" , 100 , HorizontalAlignment.Left ) ;
Lv1.Visible = true ;
⽤循环把数据插⼊进ListView,⽤reader⽅法读取中括号中的字段名。
lv1.Items.Clear(); //清空lv1中的记录
ListViewItem li = new ListViewItem();
li.SubItems.Clear(); //清空每⾏数据的每⼀列数据。
foreach (DataRow reader in stu.Rows) //前提是stu有数据,stu是DataTable
{
ListViewItem item = new ListViewItem((reader["EMP_NO"]).ToString());
item.SubItems.Add(reader["NAME"].ToString());
item.SubItems.Add(reader["ID"].ToString());
this.lv1.Items.Add(item);
}
接下来说说Listview中的⼀些⼩技巧。
⼀、⿏标选中⼀⾏记录,如何读取那⾏记录中的某列记录??
很简单⽤这句话:lv1.SelectedItems[0].SubItems[0].Text
SelectedItems[0]指的是你选中的⾏,如果你选中的是多⾏,那么第⼀⾏中括号⾥就是0,第⼆⾏就是1,以此类推。
SubItems[0] 指的是你选中的列,第⼀列中括号⾥就是0,第⼆⾏就是1,以此类推。
⼆、Listview中双击记录事件。
在 .cs ⽂件⾥写:
private void lv1_DoubleClick(object sender, EventArgs e) //双击listview
{
//这⾥写你想要产⽣的事件。例如:
MessageBox.Show("OK");
}
在 .Designer.cs ⽂件⾥到相关的控件代码写⼊如下信息:
this.lv1.DoubleClick += new System.EventHandler(this.lv1_DoubleClick);
例如:
// lv1
//
this.lv1.Location = new System.Drawing.Point(-3, 98);
this.lv1.Name = "lv1";
this.lv1.Size = new System.Drawing.Size(1018, 527);
this.lv1.TabIndex = 28;
this.lv1.UseCompatibleStateImageBehavior = false;
this.lv1.View = System.Windows.Forms.View.Details;
this.lv1.DoubleClick += new System.EventHandler(this.lv1_DoubleClick);
三、Listview隐藏列
有时候⽤Listview会遇到这样的⿇烦。
众所周知主键是区分每条不同记录最可靠的⽅法,⼀旦主键不显⽰在Listview中,那选中Listview某⼀⾏也就意味着在这⼀⾏中取不到这条记录的主键,只能取到其他显⽰的字段,那如何把这条记录传递给其他窗⼝呢?⽤其他字段?如果是这样的话就风险太⼤了,因为其他字段会有重复的可能,这样的
程序就会出现BUG。
这时候就该发挥隐藏列的作⽤了,隐藏列⽅便使⽤,其作⽤是在前台页⾯看不出有那条主键的字段,但是在代码控制中却包含了这个字段,我们点击某⼀条记录时就能⽅便的获取这条记录的主键字段,这样只要把这字段字符传到其他窗体就没问题了,因为主键字段是唯⼀且不能为空的。
下⾯说说具体实现⽅法。
Lv1.Columns.Add ( "A" , 60 , HorizontalAlignment.Right ) ;
Lv1.Columns.Add ( "B" , 100 , HorizontalAlignment.Left ) ;
Lv1.Columns.Add ( "C" , 100 , HorizontalAlignment.Left ) ;
Lv1.Visible = true ;
foreach (DataRow reader in stu.Rows) //前提是stu有数据,stu是DataTable
{
ListViewItem item = new ListViewItem((reader["EMP_NO"]).ToString());
item.SubItems.Add(reader["NAME"].ToString());
item.SubItems.Add(reader["ID"].ToString());
item.SubItems.Add(reader["PrimaryKey"].ToString());
this.lv1.Items.Add(item);
}
红⾊的是列的标题,⽩⾊的是循环输出每⼀⾏数据,这样可以很明显的看出,只有3列,却插⼊了4列的数据,⽽最后⼀列就是主键,⽽显⽰是也只有3列,那有⼈会问了,既然第四列没有显⽰,如何去第四列的数据呢?
也是同样的代码:lv1.SelectedItems[0].SubItems[3].Text
这个3显⽰的就是第四列的数据,因为计算机是从0开始计数的,很简单吧!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论