第一步:进行设计,我们要实现以下的功能,
1.能够通过浏览文件,获取文件路径,并显示在一个文本框1当中
2.当文本框1有路径值的时候,文本框2直接计算文本框1的路径文件Md5校验码
3.当生成成功Md5校验码的时候,可复制
第二步:细节
1.为了防止浏览文件和生成Md5校验码后,用户其他操作导致路径修改,或找不到文件,复制Md5码的时候不小心少复制一位,我们应当将文本框属性设置为ReadOnly,或者是Enable false,这样可以防止用户修改。
2.为了防止用户复制错误,我们应当添加一个复制按钮,当点击此按钮时,Md5校验码直接被复制,然后可以ctrl+v直接粘贴。
3.用户在使用时,如果出现没有选择文件直接点击复制的情况,应当给予提醒,如果成功复制,也应当给予提醒。
第三步:设计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文件,直接点击运行也可以。
比较简单,是目前公司一个小需求,做出来玩一玩,欢迎大家互相交流。