first neet add an user control "DownloadBar":

/*

  • Created by SharpDevelop.
  • User: gwang
  • Date: 2016/8/25
  • Time: 14:01
  • To change this template use Tools | Options | Coding | Edit Standard Headers.

    */

    using System;

    using System.ComponentModel;

    using System.Drawing;

    using System.Windows.Forms;

namespace testHttp

{

///



/// Description of DownloadBar.

///

public partial class DownloadBar : UserControl

{

public DownloadBar()

{

//

// The InitializeComponent() call is required for Windows Forms designer support.

//

InitializeComponent();

Anchor=AnchorStyles.Left|AnchorStyles.Right;

// Width=Parent.Width -40;

Height=65;

		//
// TODO: Add constructor code after the InitializeComponent() call.
//
} public DownloadBar(DownLoadInfo info)
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
MinimumSize= new Size(126,66);
this.info=info;
btn1.Text=""+info.title +info.uid;
btn1.Visible=false;
lb1.Visible=true ; if (info.ProgressPercentage<100){ lb1.Visible=true;
lb1.Text=info.ProgressPercentage+"%"; } t = new Timer();
t.Tick+=t_tick;
t.Start ();
} protected override void OnLoad(EventArgs e)
{ base.OnLoad(e);
//Anchor=AnchorStyles.Left|AnchorStyles.Right;
// this.Size = new System.Drawing.Size(274, 65);
this.Size = new System.Drawing.Size(Parent.Width-20, 65);
this.ResumeLayout(false); } Timer t;
DownLoadInfo info; void t_tick(object sender, EventArgs e){ if(info.ProgressPercentage>=100 || info.isCompleted )
{
//lb1.Visible=false;
t.Stop();
btn1.Visible=true ;
lb1.Visible=false;
} lb1.Text=info.ProgressPercentage+"%";
lb1.Width=(int )( Width* ((double )info.ProgressPercentage * 0.01d)); }
void Btn1Click(object sender, EventArgs e)
{
MessageBox.Show(info.title );
} }

}

---------partial class for ui InitializeComponent------------------------

/*

  • Created by SharpDevelop.

  • User: gwang

  • Date: 2016/8/25

  • Time: 14:01

  • To change this template use Tools | Options | Coding | Edit Standard Headers.

    */

    namespace testHttp

    {

    partial class DownloadBar

    {

    ///



    /// Designer variable used to keep track of non-visual components.

    ///

    private System.ComponentModel.IContainer components = null;

    private System.Windows.Forms.Label lb1;

    private System.Windows.Forms.Button btn1;

     /// <summary>
    /// Disposes resources used by the control.
    /// </summary>
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected override void Dispose(bool disposing)
    {
    if (disposing) {
    if (components != null) {
    components.Dispose();
    }
    }
    base.Dispose(disposing);
    } /// <summary>
    /// This method is required for Windows Forms designer support.
    /// Do not change the method contents inside the source code editor. The Forms designer might
    /// not be able to load this method if it was changed manually.
    /// </summary>
    private void InitializeComponent()
    {
    this.lb1 = new System.Windows.Forms.Label();
    this.btn1 = new System.Windows.Forms.Button();
    this.SuspendLayout();
    //
    // lb1
    //
    this.lb1.BackColor = System.Drawing.Color.DodgerBlue;
    this.lb1.Dock = System.Windows.Forms.DockStyle.Left;
    this.lb1.Location = new System.Drawing.Point(0, 0);
    this.lb1.Name = "lb1";
    this.lb1.Size = new System.Drawing.Size(55, 65);
    this.lb1.TabIndex = 0;
    this.lb1.Text = "10%";
    this.lb1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
    //
    // btn1
    //
    this.btn1.Dock = System.Windows.Forms.DockStyle.Fill;
    this.btn1.Location = new System.Drawing.Point(0, 0);
    this.btn1.Name = "btn1";
    this.btn1.Size = new System.Drawing.Size(274, 65);
    this.btn1.TabIndex = 1;
    this.btn1.UseVisualStyleBackColor = true;
    this.btn1.Click += new System.EventHandler(this.Btn1Click);
    //
    // DownloadBar
    //
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.BackColor = System.Drawing.Color.LightSteelBlue;
    this.Controls.Add(this.lb1);
    this.Controls.Add(this.btn1);
    this.Name = "DownloadBar";
    this.Size = new System.Drawing.Size(274, 65);
    this.ResumeLayout(false); }

    }

    }


2 main ui form code behind "FrmDownload":

/*

  • Created by SharpDevelop.
  • User: gwang
  • Date: 2016/8/25
  • Time: 14:34
  • To change this template use Tools | Options | Coding | Edit Standard Headers.

    */

    using System;

    using System.Drawing;

    using System.Windows.Forms;

namespace testHttp

{

///



/// Description of FrmDownload.

///

public partial class FrmDownload : Form

{

public FrmDownload()

{

//

// The InitializeComponent() call is required for Windows Forms designer support.

//

InitializeComponent();

		//
// TODO: Add constructor code after the InitializeComponent() call.
//
} int uid=1; void Button1Click(object sender, EventArgs e)
{
DownLoadInfo info = new DownLoadInfo();
info.url="http://sw.bos.baidu.com/sw-search-sp/av_aladdin/a997f8c5c22/rj_hb1174.exe";
info.title="test it "+ uid ;
info.uid=""+uid ;
HttpUtils.downloadFile(info);
uid++; this.flowLayoutPanel1.Controls.Add(new DownloadBar(info));
Text="there "+ this.flowLayoutPanel1.Controls.Count +" downloading.........";
} }

}

oh... first need define util class "HttpUtils"

/*

  • Created by SharpDevelop.

  • User: gwang

  • Date: 2016/8/24

  • Time: 17:23

  • To change this template use Tools | Options | Coding | Edit Standard Headers.

    */

    using System;

    using System.Net;

    using System.ComponentModel;

    using System.Collections;

    using System.Collections.Generic;

    using System.Linq;

    namespace testHttp

    {

    ///



    /// Description of HttpUtils.

    ///

    public class HttpUtils

    {

    public HttpUtils()

    {

     }
    
     public static List<DownLoadInfo> listDownloadInfo= new List<DownLoadInfo>();
    
     public static void downloadFile(DownLoadInfo info){
    
     	if(listDownloadInfo.Count (n=> n.uid==info.uid )>0)
    { return;
    } listDownloadInfo.Add(info);
    WebClient wc=new WebClient();
    wc.DownloadProgressChanged+= wc_DownloadProgressChanged;
    wc.DownloadDataCompleted+=wc_DownloadDataCompleted; //wc.DownloadStringAsync(new Uri("https://jirafnd.dev.activenetwork.com/browse/HYTEK-274",UriKind.Absolute ),info);
    wc.DownloadDataAsync(new Uri(info.url ,UriKind.Absolute ),info); } private static void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e){ (e.UserState as DownLoadInfo ).ProgressPercentage= e.ProgressPercentage; } private static void wc_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e){ (e.UserState as DownLoadInfo ).isCompleted =( e.Error==null) ; }

    }

    // this for basic info class

    public class DownLoadInfo{

     public string title{get;set;}
    public string url{get;set;}
    public string uid{get;set;}
    public int ProgressPercentage{ get;set;}
    public bool isCompleted{get;set;}

    }

}

c# multi-ply download ui的更多相关文章

  1. jQuery ui autocomplete 与easyUI冲突解决办法(重命名ui的autocomplete 和menu部分)

    http://jqueryui.com/download/   UI定制只选autocomplete 会自动把依赖的menu模块也加入进来--然而easyUI也有自己的menu,于是就-- 折腾了好久 ...

  2. 25套用于 Web UI 设计的免费 PSD 网页元素模板

    Web 元素是任何网站相关项目都需要的,质量和良好设计的元素对于设计师来说就像宝贝一样.如果您正在为您的网站,博客,Web 应用程序或移动应用程序寻找完美设计的网页元素,那么下面这个列表会是你需要的. ...

  3. 免费素材:25套免费的 Web UI 设计的界面元素(转)

    Web 元素是任何网站相关项目都需要的,质量和良好设计的元素对于设计师来说就像宝贝一样.如果您正在为您的网站,博客,Web 应用程序或移动应用程序寻找完美设计的网页元素,那么下面这个列表会是你需要的. ...

  4. "多行文本"组件:<multi> —— 快应用组件库H-UI

     <import name="multi" src="../Common/ui/h-ui/text/c_text_multi"></impo ...

  5. English word

    第一部分  通过词缀认识单词 (常用前缀一) 1.a- ①加在单词(形容词)或词根前面,表示"不,无,非" acentric [ə'sentrik] a  无中心的(a+centr ...

  6. Android DownloadProvider学习 (二)

    DownloadManager.Request用来请求一个下载,DownloadManager.Query用来查询下载信息,这两个类的具体功能会在后面穿插介绍.DownloadManager的源码可见 ...

  7. JavaScript使用DeviceOne开发实战(四)仿优酷视频应用

    开发之前需要考虑系统的差异性,比如ios手机没有回退键,所以在开发时一定要考虑二级界面需要有回退键,否则ios的手机就会陷入到这个页面出不去了.安卓系统有回退键,针对这个情况需要要求用户在3秒钟之内连 ...

  8. Android 下载模块分析(DownloadManager和DownloadProvider)

    Android下载模块主要有2个部分组成:DownloadManager和DownloadProvider:其中DownloadManager提供接口供调用,具体的实现是 DownloadProvid ...

  9. Android 演示 DownloadManager——Android 下载 apk 包并安装

    本文内容 环境 项目结构 演示下载 参考资料 本文是 github 上 Trinea-Android-common 和 Trinea-Android-Demo 项目的一部分,将下载部分分离出来,看看如 ...

随机推荐

  1. STL中 vector 和 list 一些特性

    STL中的vector特点是: 其容量在需要时可以自动分配,本质上是数组形式的存储方式.即在索引可以在常数时间内完成.缺点是在插入或者删除一项时,需要线性时间.但是在尾部插入或者删除,是常数时间的. ...

  2. [VS2015] [asp.net] 允许远程访问本机正在DEBUG的服务

    一.打开并编辑解决方案目录(不是工程目录)下的文件: \.vs\config\applicationhost.config 增加黑体行: <site name="XXXX" ...

  3. webkit、cef、nwjs、electron、 miniblink浏览器内核优缺点

    市面上作为嵌入的组件的可用的浏览器内核,不外乎这几个:webkit.cef.nwjs.electron. 1.cef:优点是由于集成的chromium内核,所以对H5支持的很全,同时因为使用的人也多, ...

  4. pycharm something

    e1:使用的版本2016.3 发现无法执行py程序,执行菜单为灰色.选择py为2.7. e2:使用过jython可以运行,但是语法有问题str.formate无法执行

  5. [C++] 用Xcode来写C++程序[4] 函数

    用Xcode来写C++程序[4] 函数 此节包括引用函数,内联函数,防止修改函数入参,函数自身带有默认值. 引用函数:防止复制对象,减少系统开销 内联函数:编译的时候根据具体情形将代码嵌入进去,成不成 ...

  6. September 02nd 2017 Week 35th Saturday

    Some things are more precious because they don't last long. 有些东西之所以弥足珍贵,是因为它们总是昙花一现. Life is ephemer ...

  7. 激活office软件

    1. 打开校园软件正版化激活网址 http://nic.seu.edu.cn/2015/0113/c12333a115290/page.htm 2. 下载KMS激活脚本 3. 登陆easyconnec ...

  8. 线段树&&线段树的创建线段树的查询&&单节点更新&&区间更新

    目录 线段树 什么是线段树? 线段树的创建 线段树的查询 单节点更新 区间更新 未完待续 线段树 实现问题:常用于求数组区间最小值 时间复杂度:(1).建树复杂度:nlogn.(2).线段树算法复杂度 ...

  9. rss工具及资源

    使用的工具:reeder 资源: https://calayer.com https://github.com/SwiftOldDriver/iOS-Weekly/releases https://w ...

  10. 【洛谷】【线段树】P1471 方差

    [题目背景:] 滚粗了的HansBug在收拾旧数学书,然而他发现了什么奇妙的东西. [题目描述:] 蒟蒻HansBug在一本数学书里面发现了一个神奇的数列,包含N个实数.他想算算这个数列的平均数和方差 ...