首页 > 代码库 > 公共控件Listview

公共控件Listview

ListView属性中,Items是行的总集合,Items集合中的每一个是一行,Items集合里面有ListViewItem集合,这个集合实例化:ListViewItem li=new ListViewItem(); li.text是第一行的第一列,SubItems集合是li里面的集合,li.SubItems子集是每一行的、除了第一列的其他列。

 

 

1、视图

(1)点击图像上面的“小三角”,将视图设置为Details。--外观-view可更改。

(2)表列:点击“设置列”,“添加(A)”,出现columnHeader1.....这是表的列,设置Text,此为列名。------属性里面的行为-Colums

(3)表行:点击上面“数据”的“Users”结合,点击"添加",添加的项为表的剩余的列。--属性里面的行为-Items

(4)数据库连接:

        以以前Users表为例,建立App_Code文件夹,添加实体Student类和数据访问类UsersData。

         数据访问类建立查询Student表的全部信息的方法:Pulic    list<Users> list select(){代码}

         在form1的表的Button设置点击事件:第一:先将全部数据取出来 List<Users> list=new UsersData().Select();

                 第二:将数据导入到ListView中去。      

 foreach (Users a in u)            {                ListViewItem li = new ListViewItem();                li.Text = a.UserName;                li.SubItems.Add(a.Password);                li.SubItems.Add(a.NickName);                li.SubItems.Add(a.Sex?"":"");                li.SubItems.Add(a.Birthday.ToString("yyyy年MM月dd日"));                li.SubItems.Add(a.Nation);                listView1.Items.Add(li);                        }

详细总代码如下:

技术分享
//实体类using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace WindowsFormsApplication33.App_Code{    public class Users    {        private string _UserName;        public string UserName        {            get { return _UserName; }            set { _UserName = value; }                }        private string _Password;        public string Password        {            get { return _Password; }            set { _Password = value; }        }        private string _NickName;        public string NickName        {            get { return _NickName; }            set { _NickName = value; }        }        private bool _Sex;        public bool Sex        {            get { return _Sex; }            set { _Sex = value; }                }        private DateTime _Birthday;        public DateTime Birthday        {            get { return _Birthday; }            set { _Birthday = value; }        }        private string _Nation;        public string Nation        {            get { return _Nation; }            set { _Nation = value; }        }    }}
View Code
技术分享
//数据访问类using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.SqlClient;namespace WindowsFormsApplication33.App_Code{    public class UserData    {        SqlConnection cnn = null;        SqlCommand cmd = null;        public UserData()        {            cnn = new SqlConnection("server=.;database=ren;user=sa;pwd=123");            cmd = cnn.CreateCommand();        }        public List<Users> select()//查询全部信息,返回集合        {            List<Users> u = new List<Users>();            cmd.CommandText = "select * from Users";            cnn.Open();            SqlDataReader ss = cmd.ExecuteReader();            if (ss.HasRows)            {                                while (ss.Read())                {                    Users a = new Users();                    a.UserName = ss[0].ToString();                    a.Password = ss[1].ToString();                    a.NickName = ss[2].ToString();                    a.Sex = Convert.ToBoolean(ss[3]);                    a.Birthday = Convert.ToDateTime(ss[4]);                    a.Nation = ss[5].ToString();                    u.Add(a);                         }                                }            cnn.Close();            return u;        }    }}
View Code
技术分享
//点击事件using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using WindowsFormsApplication33.App_Code;namespace WindowsFormsApplication33{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void listView1_SelectedIndexChanged(object sender, EventArgs e)        {        }        private void button1_Click(object sender, EventArgs e)        {            List<Users> u = new UserData().select();//获得集合                        foreach (Users a in u)            {                ListViewItem li = new ListViewItem();                li.Text = a.UserName;                li.SubItems.Add(a.Password);                li.SubItems.Add(a.NickName);                li.SubItems.Add(a.Sex?"":"");                li.SubItems.Add(a.Birthday.ToString("yyyy年MM月dd日"));                li.SubItems.Add(a.Nation);                listView1.Items.Add(li);                        }                   }        private void Form1_Load(object sender, EventArgs e)        {        }    }}
View Code

2、问题:怎么才能打开窗体,自动在窗体中显示数据库的内容

办法:数据查询显示代码的方法写在窗体的构造函数中。

3、怎么给用户展示最终数据

办法:数据库的属性扩展。

4、在窗体中怎么显示行号

办法:在函数外int i=1;在函数内循环时设置第一列的i++;

5、选中一行数据

外观 - FullRowSelect:选择其中一项,是否选中整行
          CheckBoxes:复选框
           GridLines:网格线
行为 - HideSelection :当控件没有焦点时,是否移除选定项的突出显示
           HeaderStyle:列表头的样式,是否能被选中
           HoverSelection :鼠标悬浮在项上选择项,不好用,需停顿一会,通常与CheckBoxes连用

如何将选中的数据取出来
一个是FullRowSelect属性为True可以选择整行数据
ListView1.SelectedItems

 foreach (ListViewItem li in listView1.SelectedItems)            {                if (li.Selected)                {                    MessageBox.Show(li.SubItems[1].Text);                }                           }

另一个是CheckBoxes属性为True时,可以按照复选框来选择整行数据
ListView1.CheckedItems

 foreach (ListViewItem li in listView1.SelectedItems)            {                if (li.Checked)                {                    MessageBox.Show(li.SubItems[1].Text);                }                           }

完!

 

公共控件Listview