WinForm ListView

Posted 兔小灰385

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinForm ListView相关的知识,希望对你有一定的参考价值。

  今天,我学习了公共控件中的ListView的内容。

  首先,在利用ListView布置界面时,有以下三个方面:

  1、视图: 
           在其右上方小箭头点击将视图改为Details;或者右键属性在外观View将其改为Details。
  2、设置列头:
           在其右上方小箭头点击选择编辑列,然后添加列名;或右键属性-行为-Columns。
  3、添加行数据 
           在其右上方小箭头点击选择编辑项,然后将属性Text改名,即第一列,添加成员即其它列;或右键属性-行为-Items。

  在进行数据库的链接时,有五个方面的内容:

  1、窗体加载后自动绑定显示ListView中的数据。

  办法:数据绑定代码写在窗体的构造函数中。

  窗体中的代码:

     public Form1()
        {
            InitializeComponent();
            DataBind();
        }

        public void DataBind()
        {
            listView1.Items.Clear();
            //1、将全部数据取出来
            List<Users> list = new UsersData().Select();

            int a = 1;
            //2、将数据导入到ListView中去
            foreach (Users u in list)
            {
                ListViewItem li = new ListViewItem();

                li.Text = a.ToString();
                li.SubItems.Add(u.UserName);
                li.SubItems.Add(u.PassWord);
                li.SubItems.Add(u.NickName);
                li.SubItems.Add(u.SetStr);
                li.SubItems.Add(u.BirthdayStr);
                li.SubItems.Add(u.NationName);

                listView1.Items.Add(li);
                a++;
            }
        }

  数据访问类UsersData中的代码:

     SqlConnection conn = null;
        SqlCommand cmd = null;

        public UsersData()
        {
            conn = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123");
            cmd = conn.CreateCommand();
        }

        public List<Users> Select()
        {
            List<Users> list = new List<Users>();

            cmd.CommandText = "select *from Users";

            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    Users u = new Users()
                    {
                        UserName = dr[0].ToString(),
                        PassWord = dr[1].ToString(),
                        NickName = dr[2].ToString(),
                        Sex = Convert.ToBoolean(dr[3]),
                        Birthday = Convert.ToDateTime(dr[4]),
                        Nation = dr[5].ToString()
                    };
                    list.Add(u);
                }
            }
            conn.Close();
            return list;
        }

  2、给用户展示最终用户可以看得懂的数据,如:性别(男/女),生日(2000/01/20)。

  办法:利用属性扩展,再封装一个string类。

  3、在每一条所展示的数据前添加行号。

  办法:用C#变量循环++来实现。

  4、数据重复绑定。(重复点击“查询”按钮,刷新查询结果)

  办法:在绑定之前清空Items集合。

  listView1.Items.Clear();

  5.选中一行数据

  外观:FullRowSelect:选择其中一项是否选中整行

          CheckBoxes:复选框

          GridLines:网格线

  行为:HideSelection :当控件没有焦点时,是否移除选定项的突出显示

          HeaderStyle:列表头的样式

          HoverSelection :鼠标悬浮在项上选择项,不好用,需停顿一会,通常与CheckBoxes连用 

  

  重点:

  1、数据如何绑定上去

  2、如何将选中的数据取出来

  (1)一个是FullRowSelect属性为True可以选择整行数据(ListView1.SelectedItems)

  if (listView1.SelectedItems.Count > 1)//选择了多行
  {
    MessageBox.Show("修改只允许选择一行");
  }
  else if (listView1.SelectedItems.Count == 1)
  {
    foreach (ListViewItem li in listView1.SelectedItems)
    {
      if (li.Selected)
      {
        MessageBox.Show(li.SubItems[0].Text + li.SubItems[1].Text + li.SubItems[2].Text + li.SubItems[3].Text + li.SubItems[4].Text + li.SubItems[5].Text);
      }
    }
  }
  else//未选中
  {
    MessageBox.Show("请先选中您要修改的数据");
  }
  (2)另一个是CheckBoxes属性为True时,可以按照复选框来选择整行数据(ListView1.CheckedItems)
  foreach (ListViewItem li in listView1.CheckedItems)
  {
    if (li.Checked)
    {
      MessageBox.Show(li.SubItems[0].Text + li.SubItems[1].Text + li.SubItems[2].Text + li.SubItems[3].Text + li.SubItems[4].Text + li.SubItems[5].Text);
    }
  }

以上是关于WinForm ListView的主要内容,如果未能解决你的问题,请参考以下文章

一行代码开启 Winform 中的 ListView 和 DataGridView 双缓冲功能

片段中 ListView 的 setOnItemClickListener

winform。 listview 更新数据后刷新

C# winform listview 选中的复选框排序

winform 自定义控件,继承自ListView 和treeview 怎么做,一般用于做权限操作

c# winform 用listview做导航界面,控件上下移动后 顺序不对?