2016-11-13 72 views
-3
switch (newButton.fileExtension) 
      { 
       case ".txt": 
        newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project Code\Project images\Text document.png"); 
        break; 
       case (".png") || (".jpg") || (".gif"): 
        newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project images\Picture document.png"); 
        break; 
       case ".doc": 
        newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project Code\Project images\Word Document.png"); 
        break; 
       default: 
        newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project Code\Project images\Unknown Document.png"); 
        break; 

      } 

我想使用switch語句來檢查newButton文件類型是什麼,但是c#不允許你做「string」|| 「字符串」有沒有解決這個問題,或者我應該使用If Else語句?C#案例陳述字符串或字符串

回答

3

一個possiblitiy應該

switch (newButton.fileExtension) 
     { 
      case ".txt": 
       newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project Code\Project images\Text document.png"); 
       break; 
      case ".png": 
      case ".jpg": 
      case ".gif": 
       newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project images\Picture document.png"); 
       break; 
      case ".doc": 
       newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project Code\Project images\Word Document.png"); 
       break; 
      default: 
       newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project Code\Project images\Unknown Document.png"); 
       break; 

     } 
+0

是的,工作很好,謝謝。 – User1

5

只要使用多個case語句不break它們之間:

它應該工作
case ".png": 
case ".jpg": 
case ".gif": 
    newButton.Image = System.Drawing.Image.FromFile(@"Some Directory\Project images\Picture document.png"); 
    break; 
0

其他的答案將幫助你實現你想要做什麼,但我會喜歡指出你可以採取的另一個方向。

我很確定點擊時這些按鈕做不同的事情,因爲它們代表不同的文檔類型。您可能在單擊處理程序中具有與該文檔類型相關的代碼,然後處理程序可能會調用其他一些方法,其中您需要根據文檔類型執行代碼的不同部分。

我會創建5個類:TextDocument,PictureDocument,WordDocument,DefaultDocument和BaseDocument。在BaseDocument中,您可以放置​​一個名爲ImagePath的抽象屬性和一個非抽象DocumentImage屬性以及一個抽象方法,該方法名稱適合於單擊該按鈕時執行的代碼。繼承類將提供路徑並設置ImagePath屬性。當設置ImagePath屬性時,您可以創建Image對象並設置DocumentImage屬性。

查找其他常用代碼並繼續將其推送到BaseDocument類。在那時你會有更少的重複代碼,並且你將擁有很好地分離的每種文檔類型的代碼。你也將有一個更清潔的設計。我現在沒有時間,但如果您需要此方法的代碼幫助,請告訴我,我可以幫助您。

+0

好主意,但我使用相同的方法,無論文件類型。這個項目是一個雲存儲應用程序,所以方法是下載,上傳,刪除等。這些方法獨立於文件類型。唯一的區別是圖形圖像圖標。感謝您的建議,儘管對於未來的項目而言,這些建議已經刻不容緩。 – User1