2013-02-12 45 views
0

是否可以顯示列表框內容,只有某些格式的文件具有特定格式?如BMP|*.bmp|GIF|*.gif|JPG|*.jpg;*.jpeg|PNG|*.png|TIFF|*.tif;*.tiff只有這些帶有這些擴展名的文件,我想在lstFiles列表框中顯示。僅在列表框中顯示圖像文件擴展

我都試過了,

lstFiles.Filter = "BMP|*.bmp|GIF|*.gif|JPG|*.jpg;*.jpeg|PNG|*.png|TIFF|*.tif;*.tiff"; 

但這並沒有工作,這可能嗎?

編輯:

我有三個聯合列表框來顯示系統驅動器,文件夾及其內容

private void lstDrive_SelectedIndexChanged_1(object sender, EventArgs e) 
     { 
      lstFolders.Items.Clear(); 

      try 
      { 
       DriveInfo drive = (DriveInfo)lstDrive.SelectedItem; 

       foreach (DirectoryInfo dirInfo in drive.RootDirectory.GetDirectories()) 
        lstFolders.Items.Add(dirInfo); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 

     private void lstFolders_SelectedIndexChanged_1(object sender, EventArgs e) 
     { 
      lstFiles.Items.Clear(); 

      DirectoryInfo dir = (DirectoryInfo)lstFolders.SelectedItem; 

      foreach (FileInfo fi in dir.GetFiles()) 
       lstFiles.Items.Add(fi); 
     } 

     private void lstFiles_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      pictureBox1.Image = Image.FromFile(((FileInfo)lstFiles.SelectedItem).FullName); 

     } 

     private int lastIndex = 0; 

     private void lstFiles_KeyUp(object sender, KeyEventArgs e) 
     { 

      if (lstFiles.SelectedIndex == lastIndex) 
      { 
       if (e.KeyCode == Keys.Up) 
       { 
        lstFiles.SelectedIndex = lstFiles.Items.Count - 1; 
       } 

       if (e.KeyCode == Keys.Down) 
       { 
        lstFiles.SelectedIndex = 0; 
       } 

      } 

      lastIndex = lstFiles.SelectedIndex; 
     } 
    } 
} 
+3

你使用什麼列表框? WPF,WinForms,...? – delixfe 2013-02-12 20:19:05

+0

你如何加載數據?您可以隨時在數據源中添加過濾功能 – 2013-02-12 20:23:38

+0

爲什麼不只是驗證n個文本?添加到列表框? – 2013-02-12 20:23:49

回答

2

您是人口使用FileInfo對象列表框自己。 FileInfo有一個屬性Extension。您可以使用該過濾器:

private void lstFolders_SelectedIndexChanged_1(object sender, EventArgs e) 
    { 
     lstFiles.Items.Clear(); 

     DirectoryInfo dir = (DirectoryInfo)lstFolders.SelectedItem; 

     foreach (FileInfo fi in dir.GetFiles()) 
      switch(fi.Extension.ToUpperInvariant()) 
      { 
       case ".BMP": 
       case ".JPG": 
       ... 
        lstFiles.Items.Add(fi); 
        break; 
      } 
    } 
+0

fffffffffffffffffffff。打敗我一拳。 – gunr2171 2013-02-12 21:02:56

+0

哦,我真的知道那種特別的感覺;-) – delixfe 2013-02-12 21:04:12

+0

非常感謝你解決了這個問題^ _^ – magi4000 2013-02-12 21:04:55

0

好吧,我個人不知道,也沒有聽說過使用列表框中的「過濾器」。爲什麼你不需要添加你想要的物品?

lstFiles.Items.Clear(); 

List<string> allowedExtensions = new List<string>() {".jpg", ".png", ".gif"}; 

DirectoryInfo dir = (DirectoryInfo)lstFolders.SelectedItem; 

foreach (FileInfo fi in dir.GetFiles().Where((x)=>allowedExtensions.Contains(x))) 
{ 
    lstFiles.Items.Add(fi); 
} 
+0

非常感謝你的幫助,我現在已經想通了,但是再次感謝你的時間 – magi4000 2013-02-12 21:05:23