公共控件Listview

Posted 王炜忠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了公共控件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的主要内容,如果未能解决你的问题,请参考以下文章

公共控件Listview

Excel 2016 / Windows10 下未安装 ListView 公共控件 (mscomctl.ocx)

使用ListView控件展示数据

如何清空android ListView控件的内容

片段中 ListView 的 setOnItemClickListener

片段中ListView的setOnItemClickListener