资源简介

文件导出时进度条显示其导出的进度。利用委托和事件,使窗体避免造成假死状态。是理解进度条比较好的案例

资源截图

代码片段和文件信息

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.Threading;

namespace ProgressBarTest
{
    public partial class Catch : Form
    {
        public Catch()
        {
            InitializeComponent();
        }

        #region 用户变量
        Point DownPoint = Point.Empty; //记录按下鼠标时的坐标
        bool CatchFinished = false;    //表示是否完成截图
        bool CatchStart = false;       //表示截图开始
        Bitmap originBmp;              //用来保存原始的图像
        Rectangle CatchRect;           //用来保存截图的矩形
        #endregion

        private void Catch_Load(object sender EventArgs e)
        {
            this.Setstyle(Controlstyles.OptimizedDoubleBuffer | Controlstyles.AllPaintingInWmPaint | Controlstyles.UserPaint true);
            this.Updatestyles();
            Bitmap CatchBmp = new Bitmap(Screen.AllScreens[0].Bounds.Width Screen.AllScreens[0].Bounds.Height);//新建一个和屏幕大小相同的图片
            this.BackgroundImage = CatchBmp;
            originBmp = new Bitmap(this.BackgroundImage);
        }

        private void Catch_MouseClick(object sender MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
        }

        private void Catch_MouseDown(object sender MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (!CatchStart)
                {
                    CatchStart = true;
                    DownPoint = new Point(e.X e.Y);
                }
            }
        }

        private void Catch_MouseMove(object sender MouseEventArgs e)
        {
            if (CatchStart)
            {//如果捕捉开始
                Bitmap destBmp = (Bitmap)originBmp.Clone();//新建一个图片对象,并让它与原始图片相同
                Point newPoint = new Point(DownPoint.X DownPoint.Y);//获取鼠标的坐标
                Graphics g = Graphics.FromImage(destBmp);//在刚才新建的图片上新建一个画板
                Pen p = new Pen(Color.Blue 1);
                int width = Math.Abs(e.X - DownPoint.X) height = Math.Abs(e.Y - DownPoint.Y);//获取矩形的长和宽
                if (e.X < DownPoint.X)
                {
                    newPoint.X = e.X;
                }
                if (e.Y < DownPoint.Y)
                {
                    newPoint.Y = e.Y;
                }
                CatchRect = new Rectangle(newPoint new Size(width height));//保存矩形
                g.DrawRectangle(p CatchRect);//将矩形画在这个画板上
                g.Dispose();//释放目前的这个画板
                p.Dispose();
                Graphics g1 = this.CreateGraphics();//重新新建一个Graphics类
                //如果之前那个画板不释放,而直接g=this.CreateGraphics()这样的话无法释放掉第一次创建的g因为只是把地址转到新的g了.如同string一样
                g1 = this.CreateGraphics();//在整个全屏窗体上新建画板
                g1.DrawImag

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件   73761344  2012-05-28 21:00  Works\bin\Debug\FileTxt.txt

     文件        176  2012-03-03 16:53  Works\bin\Debug\MyFile.bin

     文件      14848  2012-07-24 14:43  Works\bin\Debug\ProgressBarTest.exe

     文件      26112  2012-07-24 14:43  Works\bin\Debug\ProgressBarTest.pdb

     文件      14328  2012-07-24 14:41  Works\bin\Debug\ProgressBarTest.vshost.exe

     文件        490  2007-07-21 02:33  Works\bin\Debug\ProgressBarTest.vshost.exe.manifest

     文件      18944  2012-03-12 16:02  Works\bin\Debug\进度条测试.exe

     文件      44544  2012-03-12 16:02  Works\bin\Debug\进度条测试.pdb

     文件        490  2007-07-21 02:33  Works\bin\Debug\进度条测试.vshost.exe.manifest

     文件       6689  2012-05-21 11:59  Works\Catch.cs

     文件       3328  2012-05-21 11:59  Works\Catch.Designer.cs

     文件       5814  2012-05-21 11:59  Works\Catch.resx

     文件       7230  2012-05-18 15:01  Works\ExcelReport.cs

     文件       9998  2012-05-18 15:01  Works\ExcelReport.Designer.cs

     文件       8020  2012-05-18 15:01  Works\ExcelReport.resx

     文件       2014  2012-05-22 18:08  Works\GDITest.cs

     文件       1583  2012-05-18 17:33  Works\GDITest.Designer.cs

     文件       5814  2012-05-18 17:33  Works\GDITest.resx

     文件       1354  2012-07-24 14:43  Works\obj\Debug\ProgressBarTest.csproj.FileListAbsolute.txt

     文件        853  2012-07-24 14:42  Works\obj\Debug\ProgressBarTest.csproj.GenerateResource.Cache

     文件        180  2012-07-24 14:42  Works\obj\Debug\ProgressBarTest.ExcelReport.resources

     文件      14848  2012-07-24 14:43  Works\obj\Debug\ProgressBarTest.exe

     文件      26112  2012-07-24 14:43  Works\obj\Debug\ProgressBarTest.pdb

     文件        180  2012-07-24 14:42  Works\obj\Debug\ProgressBarTest.Properties.Resources.resources

     文件       4608  2012-03-12 16:10  Works\obj\Debug\TempPE\Properties.Resources.Designer.cs.dll

     文件        757  2012-03-12 16:02  Works\obj\Debug\进度条测试.csproj.FileListAbsolute.txt

     文件        990  2012-03-12 15:30  Works\obj\Debug\进度条测试.csproj.GenerateResource.Cache

     文件      18944  2012-03-12 16:02  Works\obj\Debug\进度条测试.exe

     文件      44544  2012-03-12 16:02  Works\obj\Debug\进度条测试.pdb

     文件        180  2012-03-12 10:31  Works\obj\Debug\进度条测试.Properties.Resources.resources

............此处省略25个文件信息

评论

共有 条评论