本人想搜索出整个硬盘的指定类型的文件(如TXT),还请各位热心帮忙解决,先谢了!
功能:通过程序自动搜索所有驱动盘中的指定类型的文件   
 已用方法: 
 1、通过全盘目录递归方式查找文件,但是其速度太慢,并且操作界面会导致死锁,没法点击 
 2、利用OpenFileDialog对象,设置文件夹与过滤条件后,取得的filenames总为空 
 							OpenFileDialog         openFileDialog1         =         new         OpenFileDialog();           			             
 							openFileDialog1.InitialDirectory         =          "C:\\Documents   and   Settings\\Administrator "         ;          
 							openFileDialog1.Filter         =          "*.txt|*.xsl ";          
 							openFileDialog1.FilterIndex         =         2         ;          
 							openFileDialog1.RestoreDirectory         =         true;  							 
 foreach   (string   a   in   (openFileDialog1.FileNames)) 
 { 
 textBox3.Text   +=   a;}   
 本人手头的分不多了,还请各位热心帮助,先谢了! 
 QQ:71181397				 
------解决方案--------------------public void   FindFile(string pathstr) 
          { 
              DirectoryInfo Dir = new DirectoryInfo(pathstr); 
              try 
              {   
 //textBox1为基础文件夹,textBox2为文件的扩展名 
                  foreach (DirectoryInfo d in Dir.GetDirectories()) 
                  { 
                      FindFile(Dir+d.ToString()+ "\\ "); 
                     richTextBox1.AppendText(Dir + d.ToString() +  "\\ "); 
                     richTextBox1.AppendText( "\n "); 
                  } 
                  foreach (FileInfo f in Dir.GetFiles( "*. "+textBox2.Text)) 
                  { 
                      richTextBox1.AppendText(Dir+f.ToString()); 
                      richTextBox1.AppendText( "\n "); 
                  } 
              } 
              catch 
              { 
              } 
          } 
 textbox2.text是文件格式,希望对你有用 
------解决方案--------------------		private void FindFiles(string _strPath,MenuItem menuItemParent) 
 		{ 
 			DirectoryInfo[] dinfo; 
 			FileInfo[] finfo; 
 			DirectoryInfo directoryinfo;  			 
 			MenuItem _menuItemFolder; 
 			MenuItem _menuItemFile;   
 			//当前路径下信息 
 			directoryinfo=new DirectoryInfo(_strPath); 
 			//文件夹信息 
 			dinfo= directoryinfo.GetDirectories(); 
 			//当前路径下所有文件 
 			finfo =directoryinfo.GetFiles(@ "*. "+this.strFileType);   
 			if(finfo.Length==0)//若当前路径下不存在文件 
 			{	  	 
 			} 
 			else//若当前路径下存在文件 
 			{		 
 				for(int j=0;j <finfo.Length;j++) 
 				{ 
 					//this.listBox1.Items.Add(finfo[j].FullName); 
 					_menuItemFile=new MenuItem(System.IO.Path.GetFileName(finfo[j].FullName)); 
 					_menuItemFile.Click+=new EventHandler(OpenFile); 
 					//_menuItemFile. 
 					//menuItemParent.MenuItems.Add(new MenuItem(System.IO.Path.GetFileName(finfo[j].FullName))); 
 					menuItemParent.MenuItems.Add(_menuItemFile); 
 				} 
 			}	  		 
 			//当前路径下所有文件夹 
 			if(dinfo.Length==0)//若当前目录路径下不存在下属文件夹 
 			{   
 			} 
 			else 
 			{ 
 				//this.intDepthPosition++; 
 				//if(this.intDepthPosition <this.intFindDepth+1) 
 				//{ 
 				for(int i=0;i <dinfo.Length;i++) 
 				{			 
 					//_menuItemFolder=new MenuItem(System.IO.Path.GetDirectoryName(dinfo[i].FullName)); 
 					_menuItemFolder=new MenuItem(dinfo[i].FullName.Replace(_strP