【C#】默认打开图片、文件下载

系列文章

【C#】编号生成器(定义单号规则、固定字符、流水号、业务单号)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787

【C#】日期范围生成器(开始日期、结束日期)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129040663

【C#】组件化开发,调用dll组件方法
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129492112

【C#】数据实体类使用
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128816638

【C#】单据审批流方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128972545

【C#】条码管理操作手册
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126589496

【C#】IIS平台下,WebAPI发布及异常处理
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126539836

【C#】代码模板生成工具
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126890673

【C#】MySQL数据库导入工具(批量Excel插入)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126427323

【C#】简单二维码制作和打印工具
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126884228

【C#】最全单据打印(打印模板、条形码&二维码、字体样式、项目源码)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129415723

【C#】Windows服务(Service)安装及启停方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053794

【C#】穿透Session隔离,服务调用外部程序(无窗体界面解决)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053033

【C#】任务计划实现,使用Quartz类
本文链接:https://blog.csdn.net/youcheng_ge/article/details/123667723

【C#】源码解析正则表达式
本文链接:https://blog.csdn.net/youcheng_ge/article/details/118337074

【C#】软件版本和文件MD5记录(XML操作)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/112513871

【C#】测试网络是否连通
本文链接:https://blog.csdn.net/youcheng_ge/article/details/110137288

【C#】根据名称获取编码(Dictionary获取key方法)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129816701

【C#】数据建模,你是使用DataTable还是List?
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129792726

【C#】GridControl控件和数据集双向绑定
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129423755

【C#】GridControl动态更换DataSource,数据查询异常处理
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130305424

【C#】GridControl日期字段显示时分秒
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130718303

【C#】GridControl增加选择列(不用二次点击)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130763713

【C#】数据库检查工具(可跨库访问)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/97172329

【C#】代码解析–打印数据集
本文链接:https://blog.csdn.net/youcheng_ge/article/details/131431829

【C#】代码解析–截取整个方法函数
本文链接:https://blog.csdn.net/youcheng_ge/article/details/109817809

【C#】反射机制,动态加载类文件
本文链接:https://blog.csdn.net/youcheng_ge/article/details/131435110



前言

我能抽象出整个世界,但是我不能抽象你。 想让你成为私有常量,这样外部函数就无法访问你。 又想让你成为全局常量,这样在我的整个生命周期都可以调用你。 可惜世上没有这样的常量,我也无法定义你,因为你在我心中是那么的具体。

哈喽大家好,本专栏为【项目实战】专栏,有别于【底层库】专栏,我们可以发现增加 了『问题描述』、『项目展示』章节,十分符合项目开发流程,让读者更加清楚项目解决的问题、以及产品能够达到的效果。本专栏收纳项目开发过程的解决方案,是我项目开发相对成熟、可靠方法的提炼,我将这些问题的解决思路梳理,撰写本文分享给大家,大家遇到类似问题,可按本文方案处理。

本专栏会持续更新,不断完善,专栏文章关联性较弱(文章之间依赖性较弱,没有阅读顺序)。大家有任何问题,可以私信我。如果您对本专栏感兴趣,欢迎关注吧,我将带你用最简洁的代码,实现复杂的功能。

·提示:本专栏为项目实战篇,未接触项目开发的同学可能理解困难,不推荐阅读。
3A0N000001


一、问题描述

我们已经确定了大致的方向,与业务部门沟通,进一步确定标签需要支持以下目标:
①公司存在保密要求,标签不便显示产品信息,但特定人员可以看懂。
②编号要可以人工复核,双重保障,防止识别不出可以人工干预。

二、解决方案

2.1 可行性分析

2.2 采用方案

三、软件开发(源码)

3.1 打开图片方法

 //函数内容: 函数方法,默认 打开图片
 //函数版本: 0.0.0.0
 //修改时间: 2023.07.11
 //============================================================================================
 //注意事项:
 //1.
 //2.
 //============================================================================================
 private void DefaultOpenImage(string filePathName)
 {
     //建立新的系统进程    
     System.Diagnostics.Process process = new System.Diagnostics.Process();

     //设置图片的真实路径和文件名    
     process.StartInfo.FileName = filePathName;

     //设置进程运行参数,这里以最大化窗口方法显示图片。    
     process.StartInfo.Arguments = "rundl132.exe C://WINDOWS//system32//shimgvw.dll,ImageView_Fullscreen";

     //此项为是否使用Shell执行程序,因系统默认为true,此项也可不设,但若设置必须为true    
     process.StartInfo.UseShellExecute = true;

     //此处可以更改进程所打开窗体的显示样式,可以不设    
     process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
     process.Start();
     process.Close();
 }

3.2 查看图片方法(调用方法)

  //函数内容: 函数方法,查看图片
  //函数版本: 0.0.0.0
  //修改时间: 2023.07.11
  //============================================================================================
  //注意事项:
  //1.
  //2.
  //============================================================================================
  private void ShowImage(string str_FileAddress)
  {
      try
      {
          if (string.IsNullOrEmpty(str_FileAddress)
              || str_FileAddress == BaseConst.STRING_NULL)
          {
              MessageBox.Show("没有照片,可以查看!");
              return;
          }

          string str_FileName = Path.GetFileName(str_FileAddress);
          string str_TargetFile = Path.Combine(Str_DefaultDirectory, str_FileName);

          if (File.Exists(str_TargetFile))    //存在直接打开
          {
              DefaultOpenImage(str_TargetFile);
          }
          else    //不存在服务器下载
          {
              BaseSuperMessage SuperMsg = new BaseSuperMessage(通用消息.文件下载);
              SuperMsg.Append("File", str_FileAddress);
              BaseNetClient.SendSuperMessage(SuperMsg);
          }
      }
      catch (Exception ex)
      {
          BaseHMI.Display("样品数据 ShowImage", ex);
      }
  }

3.3 文件下载方法消息处理(net网络委托)

   //函数内容: 通用消息处理
   //函数版本: 0.0.0.0
   //修改时间: 2023.04.17
   //============================================================================================
   //注意事项:
   //1.
   //2.
   //============================================================================================
   public void BaseNetClient_SuperMessageAnalyzeAsClient_Event(object o)
   {
       try
       {
           //信息初始化
           ErrorMessage ErrMsg = new ErrorMessage();
           BaseSuperMessage SuperMsg = o as BaseSuperMessage;


           //根据消息种类分别处理
           switch (SuperMsg.SN)
           {

               case 通用消息.文件下载:

                   try
                   {

                       //显示 失败信息
                       if (SuperMsg.Data[0].Name == BaseConst.MESSAGE_FAIL)
                       {
                           ErrMsg.Message = SuperMsg.Data[0].Value;
                           BaseHMI.ShowWarn(ErrMsg);
                           break;
                       }

                       //返回数据
                       string str_File = SuperMsg.FileList[0];
                       string str_FileName = Path.GetFileName(str_File);
                       string str_TargetFile = Path.Combine(Str_DefaultDirectory, str_FileName);
                       if (!File.Exists(str_TargetFile))
                       {
                           File.Copy(str_File, str_TargetFile, true);
                       }

                       if (b_DefaultOpen)
                       {
                           DefaultOpenImage(str_TargetFile);
                       }
                   }
                   catch (System.Exception ex)
                   {
                       BaseHMI.Display("SN = " + 通用消息.文件下载.ToString() + " 文件下载请求应答处理", ex);
                       BaseHMI.ShowWarn("软件报错, 请通知管理员!");
                   }

                   break;

               default:
                   break;

           }

           //消息应答通用处理
           BaseNetClient.SendOver(SuperMsg);

           //记录消息
           BaseHMI.Display(BaseVal.MessageCaption, SuperMsg);

       }
       catch (System.Exception ex)
       {
           BaseHMI.Display("通用消息分析 BaseNetClient_SuperMessageAnalyzeAsClient_Event", ex);
       }
   }

3.4 文件下载方法

  //函数内容: 函数方法,文件下载
  //函数版本: 0.0.0.0
  //修改时间: 2023.07.11
  //============================================================================================
  //注意事项:
  //1.
  //2.
  //============================================================================================
  private void DownLoadFile(string str_FileAddress)
  {
      try
      {
          if (string.IsNullOrEmpty(str_FileAddress)
              || str_FileAddress == BaseConst.STRING_NULL)
          {
              MessageBox.Show("没有文件,可以下载!");
              return;
          }

          XtraFolderBrowserDialog ofd = new XtraFolderBrowserDialog();
          if (ofd.ShowDialog() == DialogResult.OK)
          {
              Str_DefaultDirectory = ofd.SelectedPath;
              //发送请求
              BaseSuperMessage SuperMsg = new BaseSuperMessage(通用消息.文件下载);
              SuperMsg.Append("File", str_FileAddress);
              BaseNetClient.SendSuperMessage(SuperMsg);
          }
      }
      catch (Exception ex)
      {
          BaseHMI.Display("样品数据 DownLoadFile", ex);
      }
  }

3.5 文件下载调用方法

  //函数内容:右键菜单,按钮,下载断口前样照片
  //函数版本: 0.0.0.1
  //修改时间: 2023.07.11
  //============================================================================================
  //注意事项
  //  1.  
  //  2.  
  //============================================================================================
  private void Mi_DownPhoto1_Click(object sender, EventArgs e)
  {
      DataRow dr_Material = BaseGridControl_SampleData.GridView_Main.GetFocusedDataRow();
      if (dr_Material != null)
      {
          string str_FileAddress = dr_Material[断口样检验数据表.断口前照片].ToString();
          b_DefaultOpen = false;
          DownLoadFile(str_FileAddress);
      }
  }

四、项目展示

启动服务端、启动客户端。
在这里插入图片描述
查看图片:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、资源链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花北城

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值