/// <summary> /// 현재 로컬 드라이브를 불러오는 함수 /// </summary> private void localDriveTree() { //treeView1.BeginUpdate(); //성능향상을 위해 트리뷰를 한번만 그려주기 처리 treeView1.MouseDown += new MouseEventHandler(treeView1_MouseDown); //트리뷰에서 마우스를 눌렀을 때 핸들러 //현재 로컬의 논리 드라이브를 얻어와서 트리뷰에 출력한다. string[] drives = Directory.GetLogicalDrives(); foreach (string str in drives) { //시스템아이콘 추가 myImageList2.Images.Add(SystemIcon.GetIcon(str, true)); //treeview에 불러온 논리드라이브를 붙인다. TreeNode rootnode = treeView1.Nodes.Add(str); treeque.Enqueue(rootnode); //드라이브 이미지 설정 rootnode.ImageIndex = imgcount2; rootnode.SelectedImageIndex = imgcount2; imgcount2++; } while (treeque.Count > 0) { //각각 불러온 논리 드라이브 하위 폴더와 파일을 찾기 위해 nextnodeShow() 함수를 호출한다. nextnodeShow((TreeNode)treeque.Dequeue(), true); } }
/// <summary> /// 폴더와 파일 검색 후 ListView에 추가 시켜주는 함수 /// </summary> /// <param name="str"></param> private void getFolderAndFile(string str) { DirectoryInfo dinfo = new DirectoryInfo(@str); savefullpath = str; // 경로 설정 //MessageBox.Show(str); if (dinfo.Exists) //폴더일 경우 { //listview 항목들 초기화 setListview(); //이전경로 표시 ListViewItem item0 = new ListViewItem("..", foldericoncount); item0.SubItems.Add(""); item0.SubItems.Add(""); listView1.Items.Add(item0); //인자로 넘어온 경로에서 하위 경로에 해당하는 디렉토리 검색 DirectoryInfo[] directories = dinfo.GetDirectories(); //리스트뷰에 검색된 디렉토리를 추가 foreach (DirectoryInfo directory in directories) { myImageList.Images.Add(SystemIcon.GetIcon(directory.FullName, true));//시스템아이콘 추가 ListViewItem item1 = new ListViewItem(directory.Name.ToString(), imgcount); imgcount++; item1.SubItems.Add(""); item1.SubItems.Add(directory.CreationTime.ToShortDateString()); listView1.Items.Add(item1); } //인자로 넘어온 경로에서 하위 경로에 해당하는 파일 검색 FileInfo[] files = dinfo.GetFiles(); //리스트뷰에 검색된 파일을 추가 foreach (FileInfo fil in files) { myImageList.Images.Add(SystemIcon.GetIcon(fil.FullName, true)); ListViewItem item2 = new ListViewItem(fil.Name.ToString(), imgcount); imgcount++; long fil_len = fil.Length / 1024; item2.SubItems.Add(fil_len.ToString() + "KB"); item2.SubItems.Add(fil.CreationTime.ToShortDateString()); listView1.Items.Add(item2); } } else//파일일 경우 { //파일실행 file_execute(savefullpath); //경로는 이전의 폴더 경로로 다시 설정 int lastposition = savefullpath.ToString().LastIndexOf("\\"); savefullpath = savefullpath.Substring(0, lastposition); } //listView1.Focus(); }
/// <summary> /// 폴더와 파일을 검색하여 treeview에 삽입시켜 주는 함수. /// </summary> /// <param name="node"></param> /// <param name="speedup"></param> private void nextnodeShow(TreeNode node, bool speedup) { try { string fullname = node.FullPath; DirectoryInfo dinfo = new DirectoryInfo(@fullname); if (dinfo.Exists)//폴더가 존재할 때까지 { //인자로 넘어온 경로에서 하위 경로에 해당하는 디렉토리 검색 DirectoryInfo[] directories = dinfo.GetDirectories(); int speedupflag = 0; foreach (DirectoryInfo directory in directories) { TreeNode node1 = node.Nodes.Add(directory.ToString()); //MessageBox.Show(node1.FullPath); myImageList2.Images.Add(SystemIcon.GetIcon(directory.FullName.ToString(), true)); node1.ImageIndex = imgcount2; node1.SelectedImageIndex = imgcount2; imgcount2++; speedupflag++; if (speedup) { if (speedupflag > 0) { break; } } nextnodeShow(node1, true); } //인자로 넘어온 경로에서 하위 경로에 해당하는 파일검색 /* * FileInfo [] files = dinfo.GetFiles() ; * foreach(FileInfo fil in files) * { * myImageList2.Images.Add(SystemIcon.GetIcon(fil.FullName.ToString(),true)); * node.Nodes.Add(fil.ToString()); * node.ImageIndex=imgcount2; * node.SelectedImageIndex=imgcount2; * imgcount2++; * } */ } } catch { } }