1.小说阅读器
解题思路 :
1.1 拖入控件splitContainer,这个控件中间有分割线。
1.2 左侧拖入Treeview控件,选择在父容器停靠。右侧拖入txtbox,多行模式,属性中dock选择fill.
1.3 双击窗口,进入Load事件,是初始化加载。创建路径Path,创建根节点“小说”,并返回类型为TreeNode的节点标记
TreeNode tn = TreeView1.Content.Nodes.Add("小说");
string path = Path.GetFullPath(@"txt");
GetTree(tn, path);
1.4 为了显示左边树形列表,需要创建递归方法
public void GetTree(TreeNode tn, string path)
{
string[] folder = Directory.GetDirectories(path); //获得当前文件夹的子文件夹目录
string[] file = Directory.GetFiles(path,"*.txt"); // 过得当前目录得文件,删选出txt后缀名的文件
for (int i = 0; i < folder.Length; i++)
{
TreeNode tn1 = tn.Nodes.Add(Path.GetFileName(folder[i])); //将获得的子文件夹目录加到节点上 注意前面的tn
GetTree(tn1, folder[i]);
}
for (int i = 0; i < file.Length; i++)
{
TreeNode tn2=tn.Nodes.Add(Path.GetFileName(file[i])); //在节点文件夹上增加文件名, 注意前面的tn
tn2.Tag = file[i]; //把文件信息给予Tag,Tag用于存储信息
}
}
1.5 选择TreeView的 afterselect事件,表示点击后触发的事件
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Node.Tag != null) //点击节点后文件信息不为空
{
textBox1.Text = File.ReadAllText(e.Node.Tag.ToString(), Encoding.Default);
}
}
1.6 textbox的属性中,scrollBars显示为Both,表示显示滚动条
2.查找工具
解题思路:
1.1 创建窗体,有3个Textbox,分别对应输入要查询的内容,选择要查询的文件夹,和输出结果。
1.2 选择文件夹用FolderBrowserDialog。
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
textBox3.Text = fbd.SelectedPath;
}
1.3 执行查询
List<string> listres = new List<string>(); //创建集合,用于存储搜索到的结果。
private void button1_Click(object sender, EventArgs e)
{
listres.Clear(); //清空集合里的内容,再次点击查询的时候不会留下上次的数据。
GetRes(textBox3.Text.Trim(), listres);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < listres.Count; i++)
{
sb.AppendFormat("{0}\r\n", listres[i]);
}
textBox2.Text = sb.ToString();
}
/// <summary>
/// 递归方法,执行查询
/// </summary>
/// <param name="path"></param>
/// <param name="list"></param>
public void GetRes(string path, List<string> list)
{
string[] folder = Directory.GetDirectories(path); //获得文件夹名称,folder中存储的为全路径
string[] files = Directory.GetFiles(path); //获得文件名称,files中存储的为全路径
for (int i = 0; i < folder.Length; i++)
{
GetRes(folder[i], list); //递归方法,查询出所有的文件夹
}
for (int i = 0; i < files.Length; i++)
{
string temp = File.ReadAllText(files[i], Encoding.Default); //查询文件,看是否包含所需的内容
if (temp.Contains(textBox1.Text.Trim())) //有此内容的话则把完整路径添加如集合中
{
list.Add(files[i]);
}
}
}
浙公网安备 33010602011771号