zoukankan      html  css  js  c++  java
  • 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);
        }
      }

  • 相关阅读:
    汉字乱码、加密后结果字符串不一致
    msgpack和TParams互相转换
    unigui监听会话开始和结束
    System.JSON.Builders.pas
    保证最终一致性的模式
    使用 Delta Sharing 协议进行数据共享
    dremio 16 升级问题
    graylog 4.0 运行
    supabase 开源firebase 可选工具
    cube.js 最新playground 说明
  • 原文地址:https://www.cnblogs.com/hongsen3/p/5907724.html
Copyright © 2011-2022 走看看