C# listview进度条显示是如何实现的呢?让我们来看看具体的实现过程。

程序比较简单,就是重载了listview的实现,不过很实用!
- using System;
 - using System.Collections.Generic;
 - using System.Text;
 - using System.Windows.Forms;
 - using System.Drawing;
 - //C# listview进度条显示
 - namespace WindowsApplication1
 - {
 - class ListViewEx:System.Windows.Forms.ListView
 - {
 - public ListViewEx()
 - {
 - InitializeComponent();
 - }
 - //C# listview进度条显示
 - private Color mProgressColor = Color.Red;
 - public Color ProgressColor
 - {
 - get
 - {
 - return this.mProgressColor;
 - }
 - set
 - {
 - this.mProgressColor = value;
 - }
 - }
 - private Color mProgressTextColor = Color.Black;
 - public Color ProgressTextColor
 - {
 - get
 - {
 - return mProgressTextColor;
 - }
 - set
 - {
 - mProgressTextColor = value;
 - }
 - }
 - //C# listview进度条显示
 - public int ProgressColumIndex
 - {
 - set
 - {
 - progressIndex = value;
 - }
 - get
 - {
 - return progressIndex;
 - }
 - }
 - int progressIndex = -1;
 - /// ﹤summary﹥
 - /// 检查是否可以转化为一个浮点数
 - /// ﹤/summary﹥
 - const string numberstring = "0123456789.";
 - private bool CheckIsFloat(String s)
 - {
 - //C# listview进度条显示
 - foreach (char c in s)
 - {
 - if (numberstring.IndexOf(c) ﹥ -1)
 - {
 - continue;
 - }
 - else
 - return false;
 - }
 - return true;
 - }
 - protected override void Dispose(bool disposing)
 - {
 - base.Dispose(disposing);
 - }
 - //C# listview进度条显示
 - private void InitializeComponent()
 - {
 - this.OwnerDraw = true;
 - this.View = View.Details;
 - }
 - protected override void OnDrawColumnHeader(
 - DrawListViewColumnHeaderEventArgs e)
 - {
 - e.DrawDefault = true;
 - base.OnDrawColumnHeader(e);
 - }
 - protected override void OnDrawSubItem(
 - DrawListViewSubItemEventArgs e)
 - {
 - if (e.ColumnIndex != this.progressIndex)
 - {
 - //C# listview进度条显示
 - e.DrawDefault = true;
 - base.OnDrawSubItem(e);
 - }
 - else
 - {
 - if (CheckIsFloat(e.Item.SubItems[e.ColumnIndex].Text))
 - //判断当前subitem文本是否可以转为浮点数
 - {
 - float per = float.Parse(e.Item.
 - SubItems[e.ColumnIndex].Text);
 - if (per ﹥= 1.0f)
 - {
 - per = per / 100.0f;
 - }
 - Rectangle rect = new Rectangle(e.Bounds.X,
 - e.Bounds.Y, e.Bounds.Width, e.Bounds.Height);
 - DrawProgress(rect, per, e.Graphics);
 - }
 - }
 - }
 - //C# listview进度条显示
 - ///绘制进度条列的subitem
 - private void DrawProgress(Rectangle rect,
 - float percent, Graphics g)
 - {
 - if (rect.Height ﹥ 2 && rect.Width ﹥ 2)
 - {
 - //if ((rect.Top ﹥ 0 && rect.Top ﹤ this.Height)
 - &&(rect.Left ﹥ this.Left && rect.Left ﹤ this.Width))
 - {
 - //绘制进度
 - int width = (int)(rect.Width * percent);
 - Rectangle newRect = new Rectangle(rect.Left + 1,
 - rect.Top + 1, width - 2, rect.Height - 2);
 - using (Brush tmpb =
 - new SolidBrush(this.mProgressColor))
 - {
 - g.FillRectangle(tmpb, newRect);
 - }
 - newRect = new Rectangle(rect.Left +
 - 1, rect.Top + 1, rect.Width - 2,
 - rect.Height - 2);
 - g.DrawRectangle(Pens.RoyalBlue, newRect);
 - StringFormat sf = new StringFormat();
 - sf.Alignment = StringAlignment.Center;
 - sf.LineAlignment = StringAlignment.Center;
 - sf.Trimming = StringTrimming.EllipsisCharacter;
 - newRect = new Rectangle(rect.Left + 1,
 - rect.Top + 1, rect.Width - 2,
 - rect.Height - 2);
 - using (Brush b =
 - new SolidBrush(mProgressTextColor))
 - {
 - g.DrawString(
 - percent.ToString("p1"), this.Font, b, newRect, sf);
 - }
 - }
 - }
 - //C# listview进度条显示
 - else
 - {
 - return;
 - }
 - }
 - }
 - }
 
C# listview进度条显示的基本情况就向你介绍到这里,希望对你了解和学习C# listview进度条显示有所帮助。
                新闻名称:C#listview进度条显示浅析
                
                URL标题:http://www.csdahua.cn/qtweb/news16/464266.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网