Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在列表框中仅显示图像文件扩展名_C#_Winforms_File_Listbox_Image - Fatal编程技术网

C# 在列表框中仅显示图像文件扩展名

C# 在列表框中仅显示图像文件扩展名,c#,winforms,file,listbox,image,C#,Winforms,File,Listbox,Image,是否可以只显示具有特定格式的特定文件的列表框内容?像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"; 但这不起作用,有可能吗 编辑: 我有三个联合列表框来显示

是否可以只显示具有特定格式的特定文件的列表框内容?像
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;
        }
    }
}

您自己使用
FileInfo
对象填充列表框<代码>文件信息有一个属性。您可以使用该选项进行筛选:

    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;
             }
     }

好的,我个人不知道也没听说过在列表框上使用“过滤器”。当你有清单时,为什么不直接添加你想要的项目呢

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);
}
lstFiles.Items.Clear();
List allowedExtensions=new List(){.jpg“,.png“,.gif”};
DirectoryInfo dir=(DirectoryInfo)lstFolders.SelectedItem;
foreach(dir.GetFiles()中的FileInfo-fi,其中((x)=>allowedExtensions.Contains(x)))
{
lstFiles.Items.Add(fi);
}

您使用什么列表框?WPF、WinForms等等?如何将数据加载到其中?您总是可以在数据源中添加过滤功能为什么不只是验证n文本n添加到列表框?什么类型是
lstFiles
?列表框项目只是字符串还是复杂对象?fffffffffffffffff。打败我吧。哦,我真的知道那种特别的感觉;-)非常感谢你的帮助,我现在已经想好了,但再次感谢你抽出时间