使用C# Winform做一个简单的可导入文件的Md5加密程序

第一步:进行设计,我们要实现以下的功能,

1.能够通过浏览文件,获取文件路径,并显示在一个文本框1当中
2.当文本框1有路径值的时候,文本框2直接计算文本框1的路径文件Md5校验码
3.当生成成功Md5校验码的时候,可复制

第二步:细节

1.为了防止浏览文件和生成Md5校验码后,用户其他操作导致路径修改,或找不到文件,复制Md5码的时候不小心少复制一位,我们应当将文本框属性设置为ReadOnly,或者是Enable false,这样可以防止用户修改。
2.为了防止用户复制错误,我们应当添加一个复制按钮,当点击此按钮时,Md5校验码直接被复制,然后可以ctrl+v直接粘贴。
3.用户在使用时,如果出现没有选择文件直接点击复制的情况,应当给予提醒,如果成功复制,也应当给予提醒。

第三步:设计UI

UI设计
这是我设计的UI界面,比较简单,大家可以自行设计。

第四步:功能实现

双击界面上的控件,均可以生成点击事件的代码
首先,生成浏览按钮的点击事件,此点击事件是为了能够浏览文件,
我们采用C#自带的OpenFileDialog类,调用其ShowDialog方法,即可获取文件的file
我们令textBox1.Text等于ofd获取到的fileName
代码如下:

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.ShowDialog();
            textBox1.Text = ofd.FileName;
}

接下来,写一个计算Md5值的方法:

 private static string GetMD5HashFromFile(string fileName)
        {
            try
            {
                FileStream file = new FileStream(fileName, FileMode.Open);
                System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
                byte[] retVal = md5.ComputeHash(file);
                file.Close();

                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < retVal.Length; i++)
                {
                    sb.Append(retVal[i].ToString("x2"));
                }
                return sb.ToString();
            }
            catch (Exception ex)
            {
                throw new Exception("GetMD5HashFromFile() fail, error:" +ex.Message);
            }
        }

然后,我们在button1_Click方法中,将获取到的fileName传给GetMD5HashFromFile,以计算Md5校验码,用textBox2.Text去接收,代码如下:

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.ShowDialog();
            textBox1.Text = ofd.FileName;
            textBox2.Text=GetMD5HashFromFile(ofd.FileName);
        }

然后,我们添加button2_Click,button2用于复制,这里有2种方式可供选择,
1.模拟键盘鼠标操作,全选textBox2的值,点击Ctrl+C
2.直接调用C#的Clipboard,存储值
我选用了第二种方式,代码如下:

        private void button2_Click(object sender, EventArgs e)
        {
                Clipboard.SetDataObject(textBox2.Text, true);
        }

然后,我们添加一个提示弹出,右键项目,添加一个winform窗体,起名为DelayCloseForm
DelayCloseForm.Designer.cs文件代码如下:

        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

最后,我们在button2中加上判断,代码如下:

        private void button2_Click(object sender, EventArgs e)
        {
            if (textBox2.Text != "")
            {
                Clipboard.SetDataObject(textBox2.Text, true);
                MessageBox.Show(new DelayCloseForm(1600), "校验码复制成功!");
            }
            else
            {
                MessageBox.Show(new DelayCloseForm(1600), "请先浏览文件!");
            }
        }

上面图片那块,比较简单,添加一个Pic控件,设置好大小,选择一个背景图片即可。
程序运行,运行Program.cs文件即可,运行后,会在C:\Users\admin\Desktop\Md5Collection\Md5Collection\bin\Debug目录下生成exe文件,直接点击运行也可以。
比较简单,是目前公司一个小需求,做出来玩一玩,欢迎大家互相交流。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值