在上一篇中,生成输出的CRC.exe将要成为这个窗体应用的内置模块。
新建一个windows窗体应用程序,叫做CRClick。将应用程序CRC.exe从Console应用程序中找到,复制到CRClick文件夹的Debuge文件夹下。同时还有测试用的Test.txt。
打开窗体设计页面,插入两个Textbox和一个按钮,长度Textbox用来显示被校验的文件的绝对路径,短Textbox显示最终校验码。按钮激发选择文件的窗口。设计如下:
对于按钮的触发事件,我们生成一个OpenFileDialog控件,用它来读取、打开文件。具体代码如下:文件为Form.cs
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Diagnostics; 6 using System.Drawing; 7 using System.IO; 8 using System.Linq; 9 using System.Text;10 using System.Threading.Tasks;11 using System.Windows.Forms;12 13 namespace CRClick14 {15 public partial class CRClick : Form16 {17 public CRClick()18 {19 InitializeComponent();20 }21 22 private void button1_Click(object sender, EventArgs e)23 {24 Stream myStream = null;25 OpenFileDialog openFileDialog1 = new OpenFileDialog();26 openFileDialog1.InitialDirectory = @"..\..\..\CRClick\CRClick\bin\Debug";27 openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";28 openFileDialog1.FilterIndex = 2 ;29 openFileDialog1.RestoreDirectory = true ;30 31 if(openFileDialog1.ShowDialog() == DialogResult.OK)32 {33 try34 {35 if ((myStream = openFileDialog1.OpenFile()) != null)36 {37 using (myStream)38 {39 route.Text = openFileDialog1.FileName;40 41 Process pro = new Process();42 pro.StartInfo.FileName = "CRC.exe";43 pro.StartInfo.UseShellExecute = false;44 pro.StartInfo.Arguments = route.Text;45 pro.StartInfo.RedirectStandardOutput = true;46 pro.StartInfo.RedirectStandardInput = true;47 pro.Start();48 CRCResult.Text = pro.StandardOutput.ReadToEnd();49 50 }51 }52 }53 catch (Exception ex)54 {55 MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);56 }57 }58 }59 }60 }
从39到49行,是当文件选择结束之后,点下“打开”之后产生的触发事件,将文件绝对路径显示在长条文本框中,同时调用进程CRC.exe运算,结果在短框中输出,如图:
结果是
如此,一个CRC校验程序就完成了!
需要源代码和源文件的可以留言(^>^)