WinForm能否打开路径模糊的图片

未央舫 2016-03-09 11:17:29
图片路径(例):@"E:\Projects\imgs\材料\品牌_1.jpg"(红色部分为变量)

想在WinForm程序中打开图片
已知图片路径 E:\Projects\imgs\
图片名称命名 Cmb_Brand.Text _ ID. jpg
已知ID
模糊名称Cmb_Brand.Text

Cmb_Brand.Text字段名称模糊,能否根据ID字段实现此功能?
...全文
314 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
socg 2016-03-09
  • 打赏
  • 举报
回复
字节拼接字符串就可以了,何必去搜索目录?
tanta 2016-03-09
  • 打赏
  • 举报
回复
获取本目录下的所有文件,然后根据你的需求去匹配,找出唯一的文件,然后打开。
未央舫 2016-03-09
  • 打赏
  • 举报
回复
刚才没描述太清楚,重新说一下 【筛选出一条记录,根据记录得到唯一值ID,根据ID去打开文件夹里的某张图片(图片的命名规则为:Name_ID.jpg)】 因为要在WinForm中打开图片,图片的路径已确定,图片的名称是由数据库的两个字段组成的:字段1_字段2.jpg,字段2为ID可获取到,字段1无法获取到(原因是图片名称与数据库字段值有差别,例如,数据库字段值为ID:1,Name:CSDN,而图片名称为:CDN_1.jpg)注:ID可唯一确定 简单的说,就是图片名称只知道一部分(后半部分ID),能否打开图片
socg 2016-03-09
  • 打赏
  • 举报
回复
自己拼接字符串,打开文件只能是准确的文件名
yespie 2016-03-09
  • 打赏
  • 举报
回复
string.Format(@"E:\Projects\imgs\{0}_{1}.jpg","Cmb_Brand.Text ",ID) 这样设置图片路径。 或者 DirectoryInfo folder = new DirectoryInfo(path); foreach (FileInfo file in folder.GetFiles("*.jpg")) { if(file.Name.IndexOf(ID)>0){ imagepath=file.FullName; } }
xdashewan 2016-03-09
  • 打赏
  • 举报
回复
能,Directory.GetFiles可以使用通配符,msdn:https://msdn.microsoft.com/zh-cn/library/wz42302f.aspx
未央舫 2016-03-09
  • 打赏
  • 举报
回复
引用 16 楼 BitCoffee 的回复:
不好意思,没看清楚字段1不同,如果是这样的话,我觉得你还是最好是更改文件名,如果ID是主键,而且一个ID只有一张图片的话,那你随便写个小程序,重命名文件ID.jpg这样方便你打开文件,遍历文件不太好,文件少的时候不说,多了的话,就很慢了.
多谢提醒
未央舫 2016-03-09
  • 打赏
  • 举报
回复
非常感谢各位大神的热心回答,学到了好多东西!
正怒月神 2016-03-09
  • 打赏
  • 举报
回复
引用 8 楼 weiyf27 的回复:
[quote=引用 7 楼 socg 的回复:] 字节拼接字符串就可以了,何必去搜索目录?
因为获取的字符串与图片名不一样,可以理解为数据库里的为全称,图片名为简称,所以获得的全路径打不开图片[/quote] 那应该在数据库找到对应的全称,然后拼接
xuzuning 2016-03-09
  • 打赏
  • 举报
回复
Directory.GetFiles(路径, 匹配串) 其中: 路径 你已经知道了 匹配串 带通配符的文件名,对于你的应用而言就是
string[] dirs = Directory.GetFiles(path, string。Format"*_{0}.jpg", ID));
BitCoffee 2016-03-09
  • 打赏
  • 举报
回复
引用 15 楼 BitCoffee 的回复:
[quote=引用 12 楼 weiyf27 的回复:] [quote=引用 11 楼 scatking 的回复:] 确定了一条记录就能用两个字段拼出这条记录对应的完整的文件名,为什么还说图片名称只知道一部分,实在不明白
可能没描述清楚, 因为工作人员配合方面出了点问题,图片命名的字段1与对应的数据库里字段1的值不一样(命名规则:字段1_字段2.jpg), 而修改图片命名的工作量太大,所以才有这个问题[/quote] 既然现在的命名规则是:字段1_字段2.jpg 那么你查询的sql语句不就可以是:select 文件名 = 字段1 + '_' + 字段2 + '.jpg' from table where id = 参数id 然后打开之前判断下文件是否存在: if(File.Exists(Path.Combine("文件路径,文件名"))) { //打开文件 }[/quote] 不好意思,没看清楚字段1不同,如果是这样的话,我觉得你还是最好是更改文件名,如果ID是主键,而且一个ID只有一张图片的话,那你随便写个小程序,重命名文件ID.jpg这样方便你打开文件,遍历文件不太好,文件少的时候不说,多了的话,就很慢了.
BitCoffee 2016-03-09
  • 打赏
  • 举报
回复
引用 12 楼 weiyf27 的回复:
[quote=引用 11 楼 scatking 的回复:] 确定了一条记录就能用两个字段拼出这条记录对应的完整的文件名,为什么还说图片名称只知道一部分,实在不明白
可能没描述清楚, 因为工作人员配合方面出了点问题,图片命名的字段1与对应的数据库里字段1的值不一样(命名规则:字段1_字段2.jpg), 而修改图片命名的工作量太大,所以才有这个问题[/quote] 既然现在的命名规则是:字段1_字段2.jpg 那么你查询的sql语句不就可以是:select 文件名 = 字段1 + '_' + 字段2 + '.jpg' from table where id = 参数id 然后打开之前判断下文件是否存在: if(File.Exists(Path.Combine("文件路径,文件名"))) { //打开文件 }
未央舫 2016-03-09
  • 打赏
  • 举报
回复
引用 2 楼 yespie 的回复:
DirectoryInfo folder = new DirectoryInfo(path); foreach (FileInfo file in folder.GetFiles("*.jpg")) { if(file.Name.IndexOf(ID)>0){ imagepath=file.FullName; } }
改了一下就好了,多谢! DirectoryInfo folder = new DirectoryInfo(path); foreach (FileInfo file in folder.GetFiles("*_" + ID + ".jpg")) { imgPath = file.FullName; }
未央舫 2016-03-09
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:
能,Directory.GetFiles可以使用通配符,msdn:https://msdn.microsoft.com/zh-cn/library/wz42302f.aspx
刚试了下, string[] dirs = Directory.GetFiles(path, "XX"); 不过只能搜到以XX开始的字符,我用 "_3.jpg"搜不到数据
未央舫 2016-03-09
  • 打赏
  • 举报
回复
引用 11 楼 scatking 的回复:
确定了一条记录就能用两个字段拼出这条记录对应的完整的文件名,为什么还说图片名称只知道一部分,实在不明白
可能没描述清楚, 因为工作人员配合方面出了点问题,图片命名的字段1与对应的数据库里字段1的值不一样(命名规则:字段1_字段2.jpg), 而修改图片命名的工作量太大,所以才有这个问题
scatking 2016-03-09
  • 打赏
  • 举报
回复
引用 4 楼 weiyf27 的回复:
刚才没描述太清楚,重新说一下 【筛选出一条记录,根据记录得到唯一值ID,根据ID去打开文件夹里的某张图片(图片的命名规则为:Name_ID.jpg)】 因为要在WinForm中打开图片,图片的路径已确定,图片的名称是由数据库的两个字段组成的:字段1_字段2.jpg,字段2为ID可获取到,字段1无法获取到(原因是图片名称与数据库字段值有差别,例如,数据库字段值为ID:1,Name:CSDN,而图片名称为:CDN_1.jpg)注:ID可唯一确定 简单的说,就是图片名称只知道一部分(后半部分ID),能否打开图片
确定了一条记录就能用两个字段拼出这条记录对应的完整的文件名,为什么还说图片名称只知道一部分,实在不明白
未央舫 2016-03-09
  • 打赏
  • 举报
回复
引用 1 楼 socg 的回复:
自己拼接字符串,打开文件只能是准确的文件名
能否有类似数据库模糊查询的方法?
未央舫 2016-03-09
  • 打赏
  • 举报
回复
引用 2 楼 yespie 的回复:
DirectoryInfo folder = new DirectoryInfo(path); foreach (FileInfo file in folder.GetFiles("*.jpg")) { if(file.Name.IndexOf(ID)>0){ imagepath=file.FullName; } }
多谢提供方法,因为通过数据查询选择后得到的只有一条数据,一个ID对应一张图片,刚试了一下,文件里有XX_3.jpg,XX_33.jpg,如果ID=3,得到的却是XX_33.jpg
未央舫 2016-03-09
  • 打赏
  • 举报
回复
引用 7 楼 socg 的回复:
字节拼接字符串就可以了,何必去搜索目录?
因为获取的字符串与图片名不一样,可以理解为数据库里的为全称,图片名为简称,所以获得的全路径打不开图片

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧