读书人

Winform如何做一个简单的下载工具

发布时间: 2012-05-20 16:03:12 作者: rapoo

Winform怎么做一个简单的下载工具
一个textBox1输入网址,一个processBar1显示进度,点击一个Button1就能开始下载,不要求像迅雷那么先进,求解怎么做啊。。

[解决办法]
给你写了一个。。

C# code
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Net;using System.IO;using System.Threading;namespace WindowsFormsApplication1{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        /// <summary>        /// 更新进度条委托        /// </summary>        /// <param name="strValue"></param>        delegate void UpdateInfo(int strValue);        private void button1_Click(object sender, EventArgs e)        {                       if (txtDown.Text.Trim() == String.Empty)            {                return;            }            #region 通过请求字节数获取进度条最大值            HttpWebRequest MyReq = (HttpWebRequest)HttpWebRequest.Create(txtDown.Text.Trim());            HttpWebResponse MyRes = (HttpWebResponse)MyReq.GetResponse();            progressBar1.Maximum = (int)MyRes.ContentLength / 1024+1;            #endregion                        #region 获取下载地址的文件名            string[] DownUrl = txtDown.Text.Trim().Split('/');            string cFileName = DownUrl[DownUrl.Length - 1];            string cFileName_Remove = "";            if (cFileName.Contains("?"))            {                cFileName_Remove = cFileName.Remove(cFileName.IndexOf("?"));                saveFileDialog1.FileName = cFileName_Remove;            }            else            {                saveFileDialog1.FileName = cFileName;            }               #endregion                        //打开保存对话框            saveFileDialog1.ShowDialog();            #region 启动下载线程            if (saveFileDialog1.FileName != String.Empty)            {                Thread tUpdatelabel = new Thread(new ThreadStart(DownFile));//线程控制                tUpdatelabel.Start();            }            #endregion                    }        /// <summary>        /// 下载        /// </summary>        private void DownFile()        {            HttpWebRequest MyReq = (HttpWebRequest)HttpWebRequest.Create(txtDown.Text.Trim());            HttpWebResponse MyRes = (HttpWebResponse)MyReq.GetResponse();            if (MyRes.ContentLength > 0)            {                Stream stream_Url = MyRes.GetResponseStream();                Stream stream_FileDown = new FileStream(saveFileDialog1.FileName, FileMode.Create);                byte[] Mybyte = new byte[1024];                int osize = stream_Url.Read(Mybyte, 0, Mybyte.Length);                int i=0;                while (osize > 0)                {                     i++;                    UpdateprogressBar(i);                    stream_FileDown.Write(Mybyte, 0, Mybyte.Length);                    osize = stream_Url.Read(Mybyte, 0, (int)Mybyte.Length);                  }                stream_FileDown.Close();                stream_Url.Close();            }            MessageBox.Show("下载成功!");        }        /// <summary>        /// progressBar更新值变化        /// </summary>        /// <param name="strValue"></param>        private void UpdateprogressBar(int strValue)        {            Form1 MyForm = this;            if (MyForm.InvokeRequired)            {                UpdateInfo updateInfo = new UpdateInfo(UpdateprogressBar);                MyForm.progressBar1.Invoke(updateInfo, new object[] { strValue });            }            else            {                MyForm.progressBar1.Value = strValue;            }        }    }} 

读书人网 >C#

热点推荐