private string selPath(string key) { var src = ""; folderBrowserDialog1.SelectedPath = INI.ReadINI("上次选择路径", key); while (!Directory.Exists(src)) { var result = folderBrowserDialog1.ShowDialog(); src = folderBrowserDialog1.SelectedPath; } INI.WriteINI("上次选择路径", key, src); return(src); }
public Form4(List <string> exts) { InitializeComponent(); numericUpDown1.Maximum = numericUpDown2.Maximum = decimal.MaxValue; comboBox1.SelectedIndexChanged -= comboBox1_SelectedIndexChanged; comboBox1.SelectedIndex = 0; comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged; checkedListBox3.DataSource = 快捷选项; _exts = exts; _extsOnw.Add("all", new List <string>()); _extsOnw.Add("无", 无后缀); _extsOnw.Add("分组", 分组); string ext; int i = 0; while (true) { ext = INI.ReadINI("分组", "分组" + i++ + ""); if (!string.IsNullOrEmpty(ext)) { 自定义类别.Add(ext, new List <string>()); 分组.Add(ext); } else { break; } } foreach (var keyValuePair in 自定义类别) { i = 0; while (true) { ext = INI.ReadINI(keyValuePair.Key, keyValuePair.Key + i++ + ""); if (!string.IsNullOrEmpty(ext)) { keyValuePair.Value.Add(ext); } else { break; } } } exts.ForEach(_ext => { if (_ext.Length > 0) { if (!_extsOnw.ContainsKey(_ext[1] + "")) { _extsOnw.Add(_ext[1] + "", new List <string>()); } _extsOnw[_ext[1] + ""].Add(_ext); } else { 无后缀.Add(_ext); } }); //checkedListBox1.DataSource = exts; listBox1.DataSource = _extsOnw.Keys.ToList(); //checkedListBox2.DataSource = 右边的选择数组数据源; listBox1.GotFocus += GetFocus; listBox1.LostFocus += LostFocus; checkedListBox1.GotFocus += GetFocus; checkedListBox1.LostFocus += LostFocus; checkedListBox2.GotFocus += GetFocus; checkedListBox2.LostFocus += LostFocus; checkedListBox1Hei = checkedListBox1.Height; }
private void Form3_Load(object sender, EventArgs e) { /* * 遍历文件系统:得到一个树;堆栈数组好像用不到 *通过遍历,判断能否往下延伸,进而知道是否为根节点 *首先得到所有盘符,其次得到一个盘底下的所有内容 * 刷新文件内容则交给右键刷新功能?或者隔几秒读取一次当前内容吧;不读取子级节点 *节点展开时读取一次变化; *所以查询的基础建立在第一次扫描 *实际使用发现递归会很慢 *所以也许需要限定范围 以及异步加载 *再有就是优化写法 */ #region 添加下标集合 var url = Application.StartupPath; var _idx = 0; if ((_idx = url.LastIndexOf("\\")) != -1) //往上两级 { url = url.Substring(0, _idx); if ((_idx = url.LastIndexOf("\\")) != -1) { url = url.Substring(0, _idx); } } treeView1.ImageList = new ImageList(); treeView1.ImageList.Images.Add(new Icon(url + "\\文件查找器资源文件\\Image\\bitbug_favicon.ico")); treeView1.ImageList.Images.Add(new Icon(url + "\\文件查找器资源文件\\Image\\文件夹.ico")); treeView1.ImageList.Images.Add(new Icon(url + "\\文件查找器资源文件\\Image\\文件.ico")); treeView1.ImageList.Images.Add(new Icon(url + "\\文件查找器资源文件\\Image\\磁盘.ico")); #endregion 添加下标集合 List <TreeNode> tns = new List <TreeNode>(); Dictionary <TreeNode, string> times = new Dictionary <TreeNode, string>(); DialogResult result = MessageBox.Show("搜索全部吗?", "问询", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { //查询全部 var lt = GetRemovableDeviceID(); //D:// foreach (var s in lt) { var curNode = new TreeNode() { Name = s + "//", Text = s, Tag = new DirectoryInfo(s + "//") }; curNode.Tag = new myNodeTag(curNode) { Tag = curNode.Tag }; (curNode.Tag as myNodeTag).FileType = FileType.磁盘; var time = INI.ReadINI("盘符上次遍历时间", s + "//"); treeView1.Nodes.Add(new TreeNode() { Name = "临时占据:" + s + "//", Text = s + "上次加载时间:" + time }); //GetInDirectoryFiles(curNode); tns.Add(curNode); times.Add(curNode, time); } tns.Clear(); foreach (var keyValuePair in times.OrderBy(k => k.Value)) { tns.Add(keyValuePair.Key); } } else { button3.Enabled = false; var src = selPath("上次选择路径"); var curNode = new TreeNode() { Name = src, Text = src, Tag = new DirectoryInfo(src) }; curNode.Tag = new myNodeTag(curNode) { Tag = curNode.Tag }; (curNode.Tag as myNodeTag).FileType = FileType.文件夹; var time = INI.ReadINI("盘符上次遍历时间", src); treeView1.Nodes.Add(new TreeNode() { Name = "临时占据:" + src + "//", Text = src + "上次加载时间:" + time }); tns.Add(curNode); times.Add(curNode, time); } 开始执行搜索盘符内容的时间 = DateTime.Now; 开始执行的时间 = DateTime.Now; timer1.Start(); label2.Text = ""; 加载子节点(tns); foreach (int myCode in Enum.GetValues(typeof(OrderType))) { string strName = Enum.GetName(typeof(OrderType), myCode); //获取名称 string strVaule = myCode.ToString(); //获取值 var item = new System.Windows.Forms.ToolStripMenuItem() { Text = strName, Name = strName, Tag = strVaule }; 分组ToolStripMenuItem.DropDownItems.Add(item); item.Click += (o, args) => { if (contextMenuStrip1.Tag is TreeNode) { var node = contextMenuStrip1.Tag as TreeNode; if (node != null && node.Tag is myNodeTag) { (node.Tag as myNodeTag).Order( (OrderType)int.Parse((o as ToolStripMenuItem).Tag.ToString()), true); } } }; } }