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);
}
}