wpf 进度条 ProgressBar的使用

一 进度条的 隐藏 ,在WPF 里面 

            ProgressBar     progressBar1=new  ProgressBar();
            progressBar1.Visibility= Visibility.Hidden;   //隐藏

              progressBar1.Visibility= Visibility.Hidden;   //隐藏

              progressBar1.Visibility= Visibility.Visible;   //显示


二 进度条的 基本用法,在WPF 里面 

             progressBar1.Visibility= Visibility.Hidden;       //隐藏

             progressBar1.Maximum = 100;                         //最大值
             progressBar1.Value = 3;                                     //设置值

三   特别的用法,在一个线程里面  设置 不是本线程的 对象。

           例如在一个线程里面控制进度条的 值

          wpf中提供了全新的Dispatcher类。可以使用this.Dispatcher.BeginInvoke()或者控件.Dispatcher.BeginInvoke()这个方式和winform2.0是比较类似的。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Threading;


namespace WpfMyThree
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 窗口关闭时结束线程
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_Closed(object sender, EventArgs e)
        {
            Console.Write("结束");// mThread.Abort();
        }
        /// <summary>
        /// 设置 进度条的代理函数
        /// </summary>
        /// <param name="text">string</param>
     
  private delegate void SetprogressBarHandle(int vaule);    //定义 代理函数 
        private void SetprogressBar(int vaule)
        {
            if (this.Dispatcher.Thread != System.Threading.Thread.CurrentThread)
            {
               this.Dispatcher.Invoke(new SetprogressBarHandle(this.SetprogressBar), vaule);
            }
            else
            {
                progressBar1.Value = vaule;
               
            } 
        }

        /// <summary>
        ///  按键 处理 函数  建立线程 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonText_Click(object sender, RoutedEventArgs e)
        {


                 Thread mThread = new Thread(ThreadProcess);
                 progressBar1.Maximum = 100;
                 progressBar1.Value   = 0;
                 mThread.Name = "线程测试";
                 mThread.Start();
        }

        /// <summary>
        /// 线程处理 函数  主要调用 SetprogressBar(int vaule)  来设置进度条的值
        /// </summary>
        /// <param name="obj"></param>
        private void ThreadProcess(object obj)
        {
            int i = 0;
            while (true)
            {
                Console.WriteLine("线程一");
                i++;
                SetprogressBar( i);
                Thread.Sleep(1000);
            }
        
        }

    }
}

///////////////////////////////////////////end of file //////////////////////////////////////////////////

扫描二维码关注公众号,回复: 120017 查看本文章




猜你喜欢

转载自blog.csdn.net/feiyang094/article/details/44264207