2.
案例学习:编程实现ListView 控件的行列信息填充
(
1
)从工具箱之中拖放三个
Button
控件和一个
ListView
控件,同时设置
ListView
控件的属性
View
为
Details
。如图
2-32
所示布局。
图2-32 编程实现ListView 控件的行列信息填充界面
(
2
)具体功能的实现见下面的编码部分:
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
namespace
WindowsApplication2
{
public partial class Form001 : Form
{
public Form001()
{
InitializeComponent();
listView1.View = View.Details;//设置listView对象的View属性值为Details
}
///
<summary>
/// 在初始化事件之中配置当前listView1控件的基本属性
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form001_Load(object sender, EventArgs e)
{
ColumnHeader Header1 = new ColumnHeader();//确定一个表头对象
//设置表头的名称、对齐方式和宽度属性
Header1.Text = "姓名";
Header1.TextAlign = HorizontalAlignment.Center;
Header1.Width = 100;
//将表头对象添加入listView控件
listView1.Columns.Add(Header1);
}
/// <summary>
/// 添加属性列编码部分
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
//此处学习如何添加表头列
listView1.Columns.Add("年龄", 100, HorizontalAlignment.Center);
listView1.Columns.Add("班级", 40, HorizontalAlignment.Center);
listView1.Columns.Add("性别", 40, HorizontalAlignment.Center);
listView1.Columns.Add("职业", 40, HorizontalAlignment.Center);
button2.Enabled = false;
}
/// <summary>
/// 移除行信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
//通过Remove移除listView行信息
listView1.Columns.Remove(listView1.Columns[0]);
}
///
<summary>
/// 添加数据行
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
listView1.BeginUpdate();
//如果希望使用 ListView.ListViewItemCollection 类的 Add 方法以每次一个的方式添加项,
//则可以使用 BeginUpdate 方法防止控件在每次添加项时重新绘制 ListView。在完成将项添加//到控件的任务后,请调用 EndUpdate 方法以使 ListView 能够重新绘制。这种添加项的方法可以防止将//大量项添加到控件时发生闪烁的 ListView 绘制。
listView1.Items.Add("row1", "张三", 0);
//增加第一个Item,在View.Details模式下,有点像第一列中一个值。或者是二维表的索引值,//或者是数据库的主码位置。
listView1.Items["row1"].SubItems.Add("21");
//增加第一个Item的第一个子项SubItem,在View.Details模式下,有点像第一行中的第二个值
listView1.Items["row1"].SubItems.Add("98001");
listView1.Items["row1"].SubItems.Add("男");
listView1.Items["row1"].SubItems.Add("学生");
//以上内容,以此类推。
listView1.Items.Add("row2", "李四", 1);
listView1.Items["row2"].SubItems.Add("22");
listView1.Items["row2"].SubItems.Add("98002");
listView1.Items["row2"].SubItems.Add("女");
listView1.Items["row2"].SubItems.Add("教师");
listView1.Items.Add("row3", "王五", 2);
listView1.Items["row3"].SubItems.Add("23");
listView1.Items["row3"].SubItems.Add("98003");
listView1.Items["row3"].SubItems.Add("男");
listView1.Items["row3"].SubItems.Add("干部");
listView1.Items.Add("row4", "赵六", 3);
listView1.Items["row4"].SubItems.Add("24");
listView1.Items["row4"].SubItems.Add("98004");
listView1.Items["row4"].SubItems.Add("女");
listView1.Items["row4"].SubItems.Add("军人");
//与listView1.BeginUpdate()成对出现,结束更新
listView1.EndUpdate();
//下面开始学习如何添加行颜色变化
for (int i = 0; i < listView1.Items.Count; i++)
{
if (i % 2 == 0)
{
listView1.Items[i].BackColor = Color.Gray;
}
}
//下面开始熟悉属性
this.listView1.GridLines = true; //显示表格线
this.listView1.View = View.Details;//显示表格细节
this.listView1.LabelEdit = true; //是否可编辑,ListView只可编辑第一列。
this.listView1.Scrollable = true;//有滚动条
this.listView1.HeaderStyle = ColumnHeaderStyle.Clickable;//对表头进行设置
}
/// <summary>
/// 清空全部的数据项
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{
this.listView1.Clear();
}
/// <summary>
/// 清除列表内容,不清除表头信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button5_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
}
/// <summary>
/// 当鼠标点击ListView某行时候弹出信息提示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (ListViewItem lst in listView1.SelectedItems)
{
//在这里对lst进行处理,lst代表每一个被选中的ListViewItem
MessageBox.Show(lst.Text);//这里示例显示每一个被选中的项的第一列的文本
}
}
}
}
|
(
3
)运行后效果见图
2-33
图2-33 编程实现ListView 控件的行列信息填充运行界面
本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/208661,如需转载请自行联系原作者