如何弹出一个模式窗口来显示进度条

原创 2006年05月27日 10:43:00

最近看了好多人问这方面的问题,以前我也写过一篇blog,里面说了如何在子线程中控制进度条。但目前大多数环境,需要弹出模式窗口,来显示进度条,那么只需要在原先的基础上稍作修改即可。

 

首先是进度条窗体,需要在上面添加进度条,然后去掉ControlBox。除此外,还要增加一个方法,用来控制进度条的增加幅度,具体如下:

    /// <summary>

    /// Increase process bar

    /// </summary>

    /// <param name="nValue">the value increased</param>

    /// <returns></returns>

    public bool Increase( int nValue )

    {

        if( nValue > 0 )

        {

            if( prcBar.Value + nValue < prcBar.Maximum )

            {

                prcBar.Value += nValue;

                return true;

            }

            else

            {

                prcBar.Value = prcBar.Maximum;

                this.Close();

                return false;

            }

        }

        return false;

    }

 

接着就是主窗体了,如何进行操作了,首先需要定义两个私有成员,一个委托。其中一个私有成员是保存当前进度条窗体对象,另一个是保存委托方法(即增加进度条尺度),具体如下:

    private frmProcessBar myProcessBar = null;

    private delegate bool IncreaseHandle( int nValue );

    private IncreaseHandle myIncrease = null;

 

接着要在主窗体中提供函数来打开进度条窗体,如下:

    /// <summary>

    /// Open process bar window

    /// </summary>

    private void ShowProcessBar()

    {

        myProcessBar = new frmProcessBar();

 

        // Init increase event

        myIncrease = new IncreaseHandle( myProcessBar.Increase );

        myProcessBar.ShowDialog();

        myProcessBar = null;

    }

 

那么现在就可以开始创建线程来运行,具体如下:

    /// <summary>

    /// Sub thread function

    /// </summary>

    private void ThreadFun()

    {

        MethodInvoker mi = new MethodInvoker( ShowProcessBar );

        this.BeginInvoke( mi );

 

        Thread.Sleep( 1000 );//Sleep a while to show window

 

        bool blnIncreased = false;

        object objReturn = null;

        do

        {

            Thread.Sleep( 50 );

            objReturn = this.Invoke( this.myIncrease,

                new object[]{ 2 } );

            blnIncreased = (bool)objReturn ;

        }

        while( blnIncreased );

    }

      

       注意以上,在打开进度条窗体和增加进度条进度的时候,一个用的是BeginInvoke,一个是Invoke,这里的区别是BeginInvoke不需要等待方法运行完毕,而Invoke是要等待方法运行完毕。还有一点,此处用返回值来判断进度条是否到头了,如果需要有其他的控制,可以类似前面的方法来进行扩展。

 

启动线程,可以如下:

    Thread thdSub = new Thread( new ThreadStart( ThreadFun ) );

    thdSub.Start();

 

这样,一个用模式打开进度条窗体就做完了。

初学者对bootstrap感觉,弹出框和进度条的使用

鄙人刚接触bootstrap不久,感觉其用起来不是很爽。
  • nongs
  • nongs
  • 2014年09月05日 15:32
  • 17004

点击下载按钮,弹出进度条,下载完成,隐藏进度条

下载文件的时候,如果文件比较大,需要有个提示,这个显示一个进度条的gif图片,点击下载按钮,弹出进度条,下载完成,隐藏进度条: 在html头部加上样式: .demo{ ...
  • zhaoxuan0417
  • zhaoxuan0417
  • 2017年03月15日 10:51
  • 713

弹出模式窗口显示进度条

  • 2012年03月02日 22:39
  • 52KB
  • 下载

Android自定义弹窗进度条

Android自定义进度条主要是修改ProgressBar的style,弹窗则是在Dialog里显示ProgressBar。 直接上代码。         在style.xml里加入如下代码: ...
  • viviwen123
  • viviwen123
  • 2013年03月25日 15:19
  • 1762

jquery.jmpopups.js 弹出层 进行进度显示(遮罩层)

jquery.jmpopups.js 弹出层 进行进度显示(遮罩层) 效果如: /** * 显示loading画面 * @param desc * @return */ fun...
  • guoxu775
  • guoxu775
  • 2012年06月28日 17:38
  • 6649

C# Winform如何弹出一个模式窗口来显示进度条

最近看了好多人问这方面的问题,以前我也写过一篇blog,里面说了如何在子线程中控制进度条。但目前大多数环境,需要弹出模式窗口,来显示进度条,那么只需要在原先的基础上稍作修改即可。   首先是进度条...
  • white__cat
  • white__cat
  • 2014年11月07日 11:37
  • 12674

在sdk中使用进度条

演示了如何在sdk中创建进度条.并演示了相关的几个消息的使用#include windows.h>#include commctrl.h>        //InitCommonControls#pr...
  • XXKKFF
  • XXKKFF
  • 2007年05月07日 16:51
  • 1439

HTML5 CSS3 诱人的实例 : 网页加载进度条的实现,下载进度条等

今天给大家带来一个比较炫的进度条,进度条在一耗时操作上给用户一个比较好的体验,不会让用户觉得在盲目等待,对于没有进度条的长时间等待,用户会任务死机了,毫不犹豫的关掉应用;一般用于下载任务,删除大量任务...
  • lmj623565791
  • lmj623565791
  • 2014年06月26日 12:06
  • 47250

阅读《Android 从入门到精通》(17)——进度条

进度条(ProgressBar) java.lang.Object; android.view.View; android.widget.ProgressBar; ProgressBar 类方法 ...
  • SweetLoveFT
  • SweetLoveFT
  • 2016年01月25日 10:20
  • 1259

C# winform 进度条弹出框

  • 2017年11月27日 15:30
  • 654KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何弹出一个模式窗口来显示进度条
举报原因:
原因补充:

(最多只允许输入30个字)