控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

ActiveX控件开发实例

作者:未知 出处:cnblogs 2012年05月04日 阅读:

文件拷贝控件

要求:通过文件读写创建一个文件拷贝控件,该控件可以拷贝任意类型的文件,调用时宿主程序需要为控件提供源文件和目标文件的路径,要求在文件拷贝过程中显示拷贝的进度。
基本思想:从源文件中读取数据,然后将数据写到目标文件,从而实现文件的拷贝。但由于要实现对任意类型文件的拷贝,因而需要以字节流的方式从源文件中读取字节,然后以字节流的方式写到目标文件中,这样不管对

什么类型的文件都可以进行拷贝。
文件拷贝进度的显示可用ProgressBar控件来实现。
步骤如下:
(1)在VS.NET 2008中选择“文件”|“新建”|“项目”命令,在打开的“新建项目”对话框中选择左边方框中的“Visual C#”项,在右边的方框中选择“Windows窗体控件库”,创建控件程序MyCopyControl。
(2)参照例8.1的方法,将默认的类名“UserControl1”改为“文件拷贝控件”(这将成为工具箱中要显示的控件名称)。
(3)在解决方案资源管理器中双击节点“UserControl1.cs”,打开控件的设计界面,适当调整容器对象——UserControl对象的大小,然后在其中添加一个ProgressBar控件,并将其Dock属性值设置为Fill,使之充满整个

容器。
(4)右击节点“UserControl1.cs”,在弹出的菜单中选择“查看代码”项,打开代码编辑器,在此为控件添加一个Copy()方法和一个curValue属性。Copy()方法实现文件拷贝,curValue属性用于设置进度条的当前位置。
关键代码如下:
        public int curValue   //设置进度条的value属性值
        {
            set { progressBar1.Value = value; }
        }

        public int Copy(string sourcefilepath, string targetfilepath) //实现文件拷贝的方法
        {  FileStream fsr = null;
            FileStream fsw = null;
            BinaryWriter writer = null;
            BinaryReader reader = null;        
            try
            {  fsr = new FileStream(sourcefilepath, FileMode.Open, FileAccess.Read);
                fsw = new FileStream(targetfilepath, FileMode.OpenOrCreate, FileAccess.Write);
                byte b;   int filelength = (int)fsr.Length;   progressBar1.Minimum = 0;
                progressBar1.Maximum = filelength;
                while (fsr.Position < filelength) //以字节流的方式读写文件
                {  b = (byte)fsr.ReadByte();
                    fsw.WriteByte(b);
                    progressBar1.Value = (int)fsr.Position;
                }
                return 1;
            }
            catch (Exception ex) MessageBox.Show(ex.ToString());
            finally
            {  if (reader != null) reader.Close();
                if (fsr != null) fsr.Close();
                if (writer != null) writer.Close();
                if (fsw != null) fsw.Close();
            }
            return 0;

(5)选择菜单“生成”|“生成解决方案”命令(或按F6),生成的dll文件即为我们所需的文件拷贝控件。
至此控件完成了。下面来测试该控件。
 
测试控件:
(1)在解决方案资源管理器中添加窗体应用程序testMyCopyControl,并将之设置为启动项目。在该程序窗体上添加一个刚生成的“文件拷贝控件”、一个Button控件和两个TextBox控件及Label控件,并设置相应的属性和

适当调整它们的位置和大小:

(2)双击【拷贝】,增加如下代码:

 private void button1_Click(object sender, EventArgs e)
        {
            int result = fileCopy1.copy(textBox1.Text, textBox2.Text);
            if (result == 1)
            {
                MessageBox.Show("拷贝成功");
            }
            else
            {
                MessageBox.Show("拷贝失败");
            }
        }

(3)双击【选择】,用于选择文件,完了之后再Textbox2中写入你的目标文件路径,即可!
 

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统