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字段实现此功能?
...全文
275 20 打赏 收藏 举报
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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),能否打开图片
  • 打赏
  • 举报
回复
君之飞云 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),能否打开图片
完全可以,但是需要你提前填充Cmb_Brand.Text的内容 比如说是否总共有这么多个?后台预设选项? 如果不知道,可以先遍历一次目录的所有图片,获取到全部组,再提供操作者进行选择。最后形成一个完整的路径
  • 打赏
  • 举报
回复
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 的回复:
字节拼接字符串就可以了,何必去搜索目录?
因为获取的字符串与图片名不一样,可以理解为数据库里的为全称,图片名为简称,所以获得的全路径打不开图片
  • 打赏
  • 举报
回复
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2016-03-09 11:17
社区公告

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