转自:http://blog.sina.com.cn/s/blog_43eb83b90100mb63.html 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开始计数的,很简单吧! |
C# Listview控件使用实例
最新推荐文章于 2022-03-10 21:51:10 发布