2017-06-29 85 views
0

我目前正在開發使用C#(Windows窗體)映像加載系統。如果在文本框中輸入的值存在或不存在於文件夾中,我對如何啓用/禁用搜索按鈕存在問題。如果文本框中的值不存在於文件夾中,並且如果存在文本框中的值,可以單擊搜索按鈕,我希望搜索按鈕不能被點擊。問題是按鈕搜索無法點擊甚至難以輸入的值存在於一個文件夾中。請有人幫助我。這裏是我的代碼:如何檢查是否在文本框中的值的文件夾中存在

private void textBoxEmpNo_TextChanged(object sender, EventArgs e) 
{ 

     string baseFolder = @"\\\\egmnas01\\hr\\photo"; 

     string checkEmpNo = "*" + textBoxEmpNo.Text + "*.jpg"; 

     bool fileFound = false; 

     DirectoryInfo di = new DirectoryInfo(baseFolder); 


     foreach (var folderName in baseFolder) 
     { 
      var path = Path.Combine(baseFolder, checkEmpNo); 

      if (File.Exists(checkEmpNo)) 
      { 
      buttonSearch.Enabled = true; 

      fileFound = true; 
      break; 
      //If you want to stop looking, break; here 
      } 
     } 
     if (!fileFound) 
     { 
      //Display message that No such image found 
      buttonSearch.Enabled = false; 
     } 
    } 
+0

我覺得這個要求有點不可思議。 –

+0

@SushilMate有什麼奇怪的?如果在文件夾中不存在文本框中的值,並且文件夾中存在文本框中存在值的情況下可以單擊搜索按鈕,我希望搜索按鈕不能被點擊。 – Miza

+0

然後最新使用搜索按鈕?您允許搜索文件夾中已有的內容,恕我直言,您不應啓用/禁用按鈕,讓用戶點擊它並查看它是否存在。 –

回答

2

嘗試使用以下。

//Search for the filename that you have entered in textBoxempNo. 

string[] fileFound = Directory.GetFiles(baseFolder, "*" + textBoxEmpNo.Text 
+ "*.jpeg", SearchOption.AllDirectories) 

//Then check if there are files found. 

`if (fileFound.Length ==0) 
{ 
    buttonSearch.Enabled = false; 
} 
else 
{ 
    buttonSearch.Enabled = true; 
}` 
+0

仍然無法正常工作。ü可以在我的代碼修改?也許我錯碼:( – Miza

0
private void textBoxEmpNo_TextChanged(object sender, EventArgs e) 
     { 
      bool fileFound = false; 
      const string baseFolder = @"\\\\egmnas01\\hr\\photo"; 

      string[] matchedFiles = Directory.GetFiles(baseFolder, "*" + textBoxEmpNo.Text + "*.jpeg", SearchOption.AllDirectories); 

      if (matchedFiles.Length == 0) 
      { 
       buttonSearch.Enabled = false; 
      } 
      else 
      { 
       buttonSearch.Enabled = true; 
       fileFound = true; 
      } 
     } 

尋址阿德里亞諾Repetti建議。

private void textBoxEmpNo_TextChanged(object sender, EventArgs e) 
     { 
      bool fileFound = false; 
      const string baseFolder = @"C:\Users\matesush\Pictures"; 

      if (Directory.EnumerateFiles(baseFolder, "*" + textBoxEmpNo.Text + "*.jpeg", SearchOption.AllDirectories).Any()) 
      { 
       buttonSearch.Enabled = true; 
       fileFound = true; 
      } 
      else 
      { 
       buttonSearch.Enabled = false; 
      } 
     } 
+0

感謝您的迴應。這工作,但爲什麼它加載很慢?做你可以從慢速搜索避免任何代碼? – Miza

+0

我猜你是訪問遠程位置和文件的數量將是巨大的。可以服用的時間來搜索。 –

+0

如果照片目錄只有個文件你可以使用file.exists,這可能比上面的解決方案更快。 –

相關問題