public void AddFile(IEnumerable <string> data) { try { if (this.InvokeRequired) { this.Invoke(new Action <IEnumerable <string> >(this.AddFile), data); } else { this.ctlList.BeginUpdate(); lock (this.m_lock) { Debug.WriteLine("AddFile Lock"); var lst = new List <string>(); foreach (var path in data) { if (KisboMain.Check(path) && !this.m_list.Exists(e => e.OriginalFilePath.Equals(path, StringComparison.OrdinalIgnoreCase))) { lst.Add(path); } } for (int i = 0; i < lst.Count; ++i) { KisboFile.Create(this, lst[i]); } if (lst.Count > 0) { this.m_newItemHandler.Set(); } Interlocked.Add(ref this.m_taskbarMax, lst.Count); Debug.WriteLine("AddFile Unlock"); } this.ctlList.EndUpdate(); this.SetProgress(); } } catch { } }
private bool GetFiles(IList <string> lst, string path, bool?containsSubdir = null) { int i = 0; string[] paths; paths = Directory.GetFiles(path); for (i = 0; i < paths.Length; ++i) { if (KisboMain.Check(paths[i])) { lst.Add(paths[i]); if (lst.Count > 100) { return(false); } } } if (!containsSubdir.HasValue || !containsSubdir.Value) { paths = Directory.GetDirectories(path); // contains subitem if (!containsSubdir.HasValue && Directory.GetDirectories(this.ctlOpenDir.SelectedPath).Length > 0) { containsSubdir = ShowMessageBox("하위 폴더들도 추가할까요?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes; } if (!containsSubdir.Value) { return(true); } for (i = 0; i < path.Length; ++i) { if (!GetFiles(lst, paths[i], containsSubdir)) { return(false); } } } return(true); }
private void ctlList_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { var files = e.Data.GetData(DataFormats.FileDrop) as string[]; if (files != null) { for (int i = 0; i < files.Length; ++i) { if (KisboMain.Check(files[i])) { e.Effect = DragDropEffects.All; return; } } } } }
private void ctlAddFile_Click(object sender, EventArgs e) { if (this.ctlOpenFile.ShowDialog() == DialogResult.OK) { var lst = new List <string>(); for (int i = 0; i < this.ctlOpenFile.FileNames.Length; ++i) { if (KisboMain.Check(this.ctlOpenFile.FileNames[i])) { lst.Add(this.ctlOpenFile.FileNames[i]); } } if (lst.Count > 100) { ShowMessageBox("파일 수가 너무 많습니다!\n한번에 100개 이하씩 추가해주세요", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (lst.Count > 0) { this.AddFile(lst.ToArray()); } } }