四行C#代码实现状态栏中加载进度条!


 我们在做程序的很多时候都需要用状态栏来显示程序运行的状态信息,有时我们又需要将程序的运行状态用进度条的形式显示出来,而不想占用面板空间,所以想把进度条放到状态栏中,将二者相结合。这样做即省面板空间又美观。

  

  

  

// 这行代码是新建一个进度条,因为它不是通过设计器添加的而是我们用代码
// 添加的,所以程序不运行时它不显示在程序面板内。
private ProgressBar progress = new ProgressBar();
然后我们把剩下的三行代码添加到程序的构造函数中
// 第一行代码是这4行代码中最重要的一行,它把progress的父控件置为
// statusBar1,也就是说把progress放置到statusBar1中,而这正是我们想
//要的。
progress.Parent = statusBar1;
// 第二行代码也很重要,我们把进度条放到状态栏内了还不够,编译器默认进
// 度条添加到状态栏的开头,而我们必须把进度条放到我们想要的位置,
// Rectangle方法是用来存储矩形区域的位置和大小的,我们将用它为
// progress重新设置位置和大小。我们用到的是Rectangle方法构造函数的带4
// 个参数的重载public Rectangle(int x,int y,int width,int height);,// 4个参数均为整形,依次表示矩形左上角的x坐标、矩形左上角的y坐标、矩形// 的宽度、矩形的高度。我们把x设为message.Width + 1是使progress紧跟在
// messgae后面,也就是与progressbar对齐,把y设为2(状态栏上沿与状态栏
// 面板上沿之差为2个像素)是使progress上沿与其它状态栏面板上沿对齐,把// 矩形宽度设为progressbar.Width是使progress和progressbar长度相等,把
// 矩形高度设为statusBar1.Height – 2是使progress高度与其它状态栏面板// 高度相等。
Rectangle bounds = new Rectangle(message.Width + 1,2,progressbar.Width,statusBar1.Height - 2);
// 最后一行代码是把设计好了的矩形位置和大小赋给progress,这样我们就把
// progress停靠到我们想要的地方了。
progress.Bounds = bounds;
这样我们仅用4行代码就把进度条添加到了状态栏中自己想要的位置上了,其实我们只是把statusBar1中的progressbar的位置和大小赋给了progress,使它盖住progressbar,看起来就象是直接添加到statusBar1中一样。读者还可以通过改变矩形的位置和大小来适应自己的程序,把进度条放到自己需要的位置。
这样我们仅用4行代码就把进度条添加到了状态栏中自己想要的位置上了,其实我们只是把statusBar1中的progressbar的位置和大小赋给了progress,使它盖住progressbar,看起来就象是直接添加到statusBar1中一样。读者还可以通过改变矩形的位置和大小来适应自己的程序,把进度条放到自己需要的位置。
向状态栏中加载进度条的方法多种多样,读者还可以改变progressbar的Style属性为OwnerDraw,然后自己画进度条,本文中的方法只是笔者想出来的一种简单易行的方法,如果读者有兴趣甚至可以再加工一下,用本文中的方法做一个带进度条的状态栏ActiveX控件。如果读者想看效果的话可以加入下面的语句进行测试

//测试本例效果

progress.Value = 50;

message.Text = progress.Value.ToString() + "%";

显示效果如下图

ios 加载进度控件 加载进度条代码实现_测试