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。打败我吧。哦,我真的知道那种特别的感觉;-)非常感谢你的帮助,我现在已经想好了,但再次感谢你抽出时间