Winform控件之ListBox和TreeView
一、ListBox
->默认属性Items
->ItemsHeight属性值的大*与字体相关
->SelectionMode属性: MultiExtended表示按下ctrl多选; MultiSimple表示简单多选。
练习:使用ListBox添加图片路径并双击打开。
提示:
通过添加鼠标双击事件或者ListBox的默认事件SelectIndexChanged事件(单击选中之后)来查看选中图片。
Tips:
1、常见的System.IO类:Path,File,Dictionary
Path:对包含文件或目录“路径”信息的string实例执行操作
File:提供用于创建、复制、移动和打开文件的静态方法,并协助创建FileStream对象
->AppendAllText方法:已重载,将指定的字符串追加到文件中,如果不存在则创建该文件
Dictionary:公开用于创建、移动和枚举通过目录和子目录的静态方法,无法继承此类
->GetFiles方法:重载,返回指定目录中的文件名称。
2、获得绝对路径 Path.GetFullPath只能寻找与程序文件在一起的文件的绝对路径。
所以,要先定义一个集合,把绝对路径放进集合中,在通过SelectIndex索引用集合来调用,就可以查找到文件的绝对路径了。
代码:
// 定义一个集合来存放图片的临时路径,作为后台管理
List<string> tempPath = new List<string>();
private void Form1_Load(object sender, EventArgs e)
{
string path = @"C:\Users\yumeng\Desktop\****";
string[] namePath = System.IO.Directory.GetFiles(path);
for (int i = 0; i < namePath.Length; i++)
{
listBoxPic.Items.Add(System.IO.Path.GetFileName( namePath[i]));
tempPath.Add(namePath[i]);
}
}
然后,添加鼠标双击事件,或者ListBox的默认事件SelectIndexChanged事件(单击选中之后)来查看选中图片。
private void listBoxPic_MouseDoubleClick(object sender, MouseEventArgs e)
{
System.Diagnostics.Process.Start(tempPath[listBoxPic.SelectedIndex]);
}
OK!
二、TreeView
Treeview是一种网状结构,而ComboBox是线性结构,即它是按照顺序来排列。TreeView的父节点与子节点都是一样的逻辑关系。
->默认属性Nodes
->默认事件AfterSelect
确定选中的节点对象用SelectNode
Tips:
->SelectImageIndex和SelectImageKey则用在图片导入进来之后
Tag属性:数据,Object类型,与对象关联的用户定义数据。(类似于一个后台处理数据,前台显示就是Text。)
Tag绑定于每一个节点。
一个新的类型:TreeNode
TreeNode tn = new TreeNode() tn.Nodes属性,该属性是TreeNode类型。 每个节点上都绑定一个Tag数据类型,是object类型。 绑定到TreeView中的是根节点;绑定到跟节点的是子节点。
HideSelection属性:隐藏选中项 如果想打开文件在窗体的另一边显示,用ListView(ComboBox和TreeView的结合,有大图标*图标之分)。
图标文件用到了ImageList组件。将图片导入Images中就可以使用了。
使用代码添加根节点和子节点:
private void btnRoot_Click(object sender, EventArgs e)
{
// 直接在TreeView里面添加根节点
string str = txtContext.Text.Trim();
treeView.Nodes.Add(str);
}
private void btnSub_Click(object sender, EventArgs e)
{
string str = txtContext.Text.Trim();
TreeNode tn = treeView.SelectedNode;
if (tn == null)
{
return;
}
tn.Nodes.Add(str);
}