参考:
using System; 
  using System.Drawing; 
  using System.Collections; 
  using System.ComponentModel; 
  using System.Windows.Forms; 
  using System.Data; 
  using System.Net; 
  using System.IO; 
  using System.Threading; 
   
  namespace MyGetCar 
  { 
  /// 
  /// Form1 的摘要说明。 
  /// 
  public class Form1 : System.Windows.Forms.Form 
  { 
  private System.Windows.Forms.Label label1; 
  private System.Windows.Forms.Label label2; 
  private System.Windows.Forms.TextBox srcAddress; 
  private System.Windows.Forms.TextBox tarAddress; 
  private System.Windows.Forms.StatusBar statusBar; 
  private System.Windows.Forms.Button Start; 
   
  private WebClient client = new WebClient(); 
   
  /// 
  /// 必需的设计器变量。 
  /// 
  private System.ComponentModel.Container components = null; 
   
  public Form1() 
  { 
  // 
  // Windows 窗体设计器支持所必需的 
  // 
  InitializeComponent(); 
   
  // 
  // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 
  // 
  } 
   
  /// 
  /// 清理所有正在使用的资源。 
  /// 
  protected override void Dispose( bool disposing ) 
  { 
  if( disposing ) 
  { 
  if (components != null) 
  { 
  components.Dispose(); 
  } 
  } 
  base.Dispose( disposing ); 
  } 
   
  #region Windows Form Designer generated code 
  /// 
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改 
  /// 此方法的内容。 
  /// 
  private void InitializeComponent() 
  { 
  this.label1 = new System.Windows.Forms.Label(); 
  this.label2 = new System.Windows.Forms.Label(); 
  this.srcAddress = new System.Windows.Forms.TextBox(); 
  this.tarAddress = new System.Windows.Forms.TextBox(); 
  this.statusBar = new System.Windows.Forms.StatusBar(); 
  this.Start = new System.Windows.Forms.Button(); 
  this.SuspendLayout(); 
  // 
  // label1 
  // 
  this.label1.Location = new System.Drawing.Point(8, 32); 
  this.label1.Name = "label1"; 
  this.label1.Size = new System.Drawing.Size(72, 23); 
  this.label1.TabIndex = 0; 
  this.label1.Text = "文件地址:"; 
  this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; 
  // 
  // label2 
  // 
  this.label2.Location = new System.Drawing.Point(8, 72); 
  this.label2.Name = "label2"; 
  this.label2.Size = new System.Drawing.Size(72, 23); 
  this.label2.TabIndex = 1; 
  this.label2.Text = "另存到:"; 
  this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; 
  // 
  // srcAddress 
  // 
  this.srcAddress.Location = new System.Drawing.Point(80, 32); 
  this.srcAddress.Name = "srcAddress"; 
  this.srcAddress.Size = new System.Drawing.Size(216, 21); 
  this.srcAddress.TabIndex = 2; 
  this.srcAddress.Text = ""; 
  // 
  // tarAddress 
  // 
  this.tarAddress.Location = new System.Drawing.Point(80, 72); 
  this.tarAddress.Name = "tarAddress"; 
  this.tarAddress.Size = new System.Drawing.Size(216, 21); 
  this.tarAddress.TabIndex = 3; 
  this.tarAddress.Text = ""; 
  // 
  // statusBar 
  // 
  this.statusBar.Location = new System.Drawing.Point(0, 151); 
  this.statusBar.Name = "statusBar"; 
  this.statusBar.Size = new System.Drawing.Size(312, 22); 
  this.statusBar.TabIndex = 4; 
  // 
  // Start 
  // 
  this.Start.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 
  this.Start.Location = new System.Drawing.Point(216, 112); 
  this.Start.Name = "Start"; 
  this.Start.Size = new System.Drawing.Size(75, 24); 
  this.Start.TabIndex = 5; 
  this.Start.Text = "开始下载"; 
  this.Start.Click += new System.EventHandler(this.Start_Click); 
  // 
  // Form1 
  // 
  this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); 
  this.ClientSize = new System.Drawing.Size(312, 173); 
  this.Controls.AddRange(new System.Windows.Forms.Control[] { 
  this.Start, 
  this.statusBar, 
  this.tarAddress, 
  this.srcAddress, 
  this.label2, 
  this.label1}); 
  this.MaximizeBox = false; 
  this.Name = "Form1"; 
  this.Text = "文件下载器"; 
  this.ResumeLayout(false); 
   
  } 
  #endregion 
   
  /// 
  /// 应用程序的主入口点。 
  /// 
  [STAThread] 
  static void Main() 
  { 
  Application.Run(new Form1()); 
  } 
   
  private void StartDownload() 
  { 
  Start.Enabled = false; 
  string URL = srcAddress.Text; 
  int n = URL.LastIndexOf("/"); 
  string URLAddress = URL.Substring(0,n); 
  string fileName = URL.Substring(n+1,URL.Length-n-1); 
  string Dir = tarAddress.Text; 
  string Path = Dir+"\\"+fileName; 
   
  try 
  { 
  WebRequest myre=WebRequest.Create(URLAddress); 
  } 
  catch(WebException exp) 
  { 
  MessageBox.Show(exp.Message,"Error"); 
  } 
   
  try 
  { 
  statusBar.Text = "开始下载文件..."; 
  client.DownloadFile(URLAddress,fileName); 
  Stream str = client.OpenRead(URLAddress); 
  StreamReader reader = new StreamReader(str); 
  byte[] mbyte = new byte[100000]; 
  int allmybyte = (int)mbyte.Length; 
  int startmbyte = 0; 
  statusBar.Text = "正在接收数据..."; 
  while(allmybyte>0) 
  { 
  int m = str.Read(mbyte,startmbyte,allmybyte); 
  if(m==0) 
  break; 
   
  startmbyte+=m; 
  allmybyte-=m; 
  } 
   
  FileStream fstr = new FileStream(Path,FileMode.OpenOrCreate,FileAccess.Write); 
  fstr.Write(mbyte,0,startmbyte); 
  str.Close(); 
  fstr.Close(); 
   
  statusBar.Text = "下载完毕!"; 
  } 
  catch(WebException exp) 
  { 
  MessageBox.Show(exp.Message,"Error"); 
  statusBar.Text = ""; 
  } 
   
  Start.Enabled = true; 
  } 
   
   
  private void Start_Click(object sender, System.EventArgs e) 
  { 
  Thread th = new Thread(new ThreadStart(StartDownload)); 
  th.Start(); 
  } 
  } 
  }