根据提供的文件信息,我们可以深入探讨 ListView 的使用方法与特性,特别是在 Windows Forms 应用程序中的应用。以下将从几个方面来解析这段代码所涉及的知识点:
### 1. 初始化 ListView 控件
在初始化 ListView 控件时,我们首先需要定义列(`ColumnHeader`)以及它们的宽度和显示文本。例如:
```csharp
ColumnHeader ch1 = new ColumnHeader();
ch1.Width = 100;
ch1.Text = "学号";
```
这里创建了一个宽度为 100 像素、文本为“学号”的列头。通过 `listView1.Columns.Add(ch1)` 将该列头添加到 ListView 控件中。
### 2. 设置 ListView 显示样式
代码中设置了多种 ListView 的显示属性,例如网格线、全行选择、隐藏选择等。这些设置可以通过以下方式实现:
```csharp
listView1.GridLines = true; // 显示网格线
listView1.FullRowSelect = true; // 全行选择模式
listView1.HideSelection = false; // 隐藏选择状态时仍可见
listView1.HoverSelection = true; // 鼠标悬停时高亮
listView1.MultiSelect = false; // 不允许多选
```
这些属性的设置能够改变 ListView 的外观和交互行为,提高用户体验。
### 3. 使用 ImageList 添加图标
在 ListView 中可以使用 `ImageList` 来为项添加图标,示例代码如下:
```csharp
ImageList li = new ImageList();
li.ImageSize = new Size(80, 80); // 图片大小
li.Images.Add(Image.FromFile("pen.jpg")); // 加载图片资源
listView1.LargeImageList = li; // 设置大图标列表
```
同时还可以为 ListView 设置小图标列表:
```csharp
ImageList sm = new ImageList();
sm.ImageSize = new Size(30, 30); // 图片大小
sm.Images.Add(Image.FromFile("pen.jpg")); // 加载图片资源
listView1.SmallImageList = sm; // 设置小图标列表
```
### 4. 添加 ListViewItem 到 ListView
向 ListView 添加项可以通过创建 `ListViewItem` 并指定其文本内容和图标索引,然后调用 `listView1.Items.Add(lv)` 添加到 ListView 中:
```csharp
ListViewItem lv = new ListViewItem("姓名"); // 创建列表项,首项内容为“姓名”
lv.SubItems.Add("001"); // 第二项内容为“001”
lv.SubItems.Add("备注"); // 第三项内容为“备注”
lv.ImageIndex = 0; // 设置图标索引
listView1.Items.Add(lv); // 添加到 ListView
```
### 5. 处理 ListView 事件
处理 ListView 的事件可以实现更丰富的功能。例如,在 ListView 项被选择时获取选定项的值:
```csharp
private void listView_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
string selectedValue = listView1.SelectedItems[0].SubItems[1].Text;
Console.WriteLine(selectedValue); // 输出第二列的值
}
}
```
此外,还可以处理键盘事件,例如删除键按下时移除选中的项:
```csharp
private void lvFolderStatusList_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete && lvFolderStatusList.SelectedItems.Count > 0)
{
DateTime dtStart = DateTime.Now;
for (int i = 0; i < lvFolderStatusList.SelectedItems.Count; i++)
{
lvFolderStatusList.Items.RemoveAt(lvFolderStatusList.SelectedItems[0].Index);
}
DateTime dtEnd = DateTime.Now;
TimeSpan ts = dtEnd - dtStart;
Console.WriteLine($"移除操作耗时:{ts.TotalMilliseconds}ms");
}
}
```
以上是对提供的代码片段进行的详细解释和扩展,希望能够帮助理解和掌握 ListView 的基本使用方法及其相关特性。