WPF輕松實(shí)現(xiàn)進(jìn)度條的示例代碼
前言
本文講述如何在軟件啟動(dòng)和窗體按鈕操作時(shí)彈出進(jìn)度條。
運(yùn)行環(huán)境:Win10、VS2022
一、新建WPF項(xiàng)目


二、新建WPF窗體。
1、新建窗體,取名DefProcessBar.xaml。

2、設(shè)置窗體屬性、樣式。
<Window x:Class="WpfApp4.DefProcessBar"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp4"
mc:Ignorable="d"
Title="DefProcessBar" Width="300" Height="50"
WindowStartupLocation="CenterScreen"
WindowStyle="None" AllowsTransparency="True" Background="Transparent" ShowInTaskbar="False" ResizeMode="NoResize">
2.1、WindowStartupLocation="CenterScreen"是窗體在屏幕中間顯示;
2.2、WindowStyle="None"是不要窗體頂部?jī)?nèi)容;
2.3、AllowsTransparency="True"是允許窗體透明;
2.4、Background="Transparent"是設(shè)置透明背景;
2.5、ShowInTaskbar="False"是指示此窗口是否出現(xiàn)在任務(wù)欄;
2.6、ResizeMode="NoResize"是不可調(diào)節(jié)窗體大小。
3、添加進(jìn)度消息和進(jìn)度條。
<Grid.RowDefinitions>
<RowDefinition Height="25"></RowDefinition>
<RowDefinition Height="25"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Name="txtTitle" FontSize="16" Foreground="Yellow" HorizontalAlignment="Left" TextWrapping="Wrap" Margin="10, 0,0,0"></TextBlock>
<ProgressBar Grid.Row="1" x:Name="progressBar" Maximum="100" Height="25" Width="300" Foreground="Green" Background="LightGray" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
4、添加 DefProcessBar.xaml.cs 代碼
/// <summary>
/// DefProcessBar.xaml 的交互邏輯
/// </summary>
public partial class DefProcessBar : Window
{
public DefProcessBar()
{
InitializeComponent();
}
public void ShowProcess(int process, string title = "")
{
progressBar.Dispatcher.Invoke(() =>
{
this.txtTitle.Text = title;
this.progressBar.Value = process;
});
}
public void SetProcess(DefProcessBar defProcessBar, int process, string title = "")
{
if (process > 100)
{
process = 100;
}
else if (process < 0)
{
process = 0;
}
title += $" ({process}%)";
defProcessBar.ShowProcess(process, title);
}
}
三、在 App.xaml.cs 中使用
/// <summary>
/// App.xaml 的交互邏輯
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
Application.Current.ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown;
bool isFinish = false;
//DialogWait defProcessBar = new DialogWait();
DefProcessBar defProcessBar = new DefProcessBar();
Task.Run(() =>
{
defProcessBar.SetProcess(defProcessBar, 20, "啟動(dòng)中,請(qǐng)稍后..."); // 寫入實(shí)際處理代碼
Thread.Sleep(500);
defProcessBar.SetProcess(defProcessBar, 40, "啟動(dòng)中,請(qǐng)稍后...");
Thread.Sleep(500);
defProcessBar.SetProcess(defProcessBar, 60, "啟動(dòng)中,請(qǐng)稍后...");
Thread.Sleep(500);
defProcessBar.SetProcess(defProcessBar, 80, "啟動(dòng)中,請(qǐng)稍后...");
Thread.Sleep(500);
defProcessBar.Dispatcher.Invoke(() =>
{
defProcessBar.Close();
});
});
defProcessBar.ShowDialog();
if (isFinish)
{
base.OnStartup(e);
Application.Current.ShutdownMode = ShutdownMode.OnMainWindowClose;
}
else
{
this.Shutdown();
}
}
}
啟動(dòng)軟件查看效果。


四、在主窗體 MainWindow 中彈出進(jìn)度條。
1、添加按鈕。

2、添加按鈕事件處理。
private void Button_Click(object sender, RoutedEventArgs e)
{
DefProcessBar defProcessBar = new DefProcessBar();
Task.Run(() =>
{
defProcessBar.SetProcess(defProcessBar, 20, "啟動(dòng)中,請(qǐng)稍后...");
Thread.Sleep(500);
defProcessBar.SetProcess(defProcessBar, 40, "啟動(dòng)中,請(qǐng)稍后...");
Thread.Sleep(500);
defProcessBar.SetProcess(defProcessBar, 60, "啟動(dòng)中,請(qǐng)稍后...");
Thread.Sleep(500);
defProcessBar.SetProcess(defProcessBar, 80, "啟動(dòng)中,請(qǐng)稍后..."); //寫入實(shí)際處理代碼
Thread.Sleep(500);
defProcessBar.Dispatcher.Invoke(() =>
{
defProcessBar.Close();
});
});
defProcessBar.ShowDialog();
}
3、效果跟軟件啟動(dòng)時(shí)一樣。
缺點(diǎn):所有邏輯必須放到異步處理。
最后
以上就是WPF輕松實(shí)現(xiàn)進(jìn)度條的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于WPF實(shí)現(xiàn)進(jìn)度條的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
WPF實(shí)現(xiàn)倒計(jì)時(shí)轉(zhuǎn)場(chǎng)動(dòng)畫效果
這篇文章主要介紹了如何利用WPF實(shí)現(xiàn)倒計(jì)時(shí)轉(zhuǎn)場(chǎng)動(dòng)畫效果,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下2022-08-08
C#最簡(jiǎn)單的關(guān)閉子窗體更新父窗體的實(shí)現(xiàn)方法
原理就是將子窗體最為對(duì)話框模式彈出,當(dāng)窗體關(guān)閉或取消時(shí)更新主窗體2012-11-11
C#控制臺(tái)輸出進(jìn)度和百分比的實(shí)例代碼
C#控制臺(tái)輸出進(jìn)度和百分比的實(shí)例代碼,需要的朋友可以參考一下2013-03-03
C#實(shí)現(xiàn)將XML數(shù)據(jù)自動(dòng)化地寫入Excel文件
在現(xiàn)代企業(yè)級(jí)應(yīng)用中,數(shù)據(jù)處理與報(bào)表生成是核心環(huán)節(jié),本文將深入探討如何利用C#和一款優(yōu)秀的庫(kù),將XML數(shù)據(jù)自動(dòng)化地寫入Excel文件,有需要的小伙伴可以了解下2025-12-12
C#基于QRCode實(shí)現(xiàn)動(dòng)態(tài)生成自定義二維碼圖片功能示例
這篇文章主要介紹了C#基于QRCode實(shí)現(xiàn)動(dòng)態(tài)生成自定義二維碼圖片功能,結(jié)合實(shí)例形式分析了C#使用QRCode動(dòng)態(tài)生成二維碼圖片相關(guān)操作技巧,需要的朋友可以參考下2019-02-02
C#窗體實(shí)現(xiàn)點(diǎn)餐系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C#窗體實(shí)現(xiàn)點(diǎn)餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
使用Spire.PDF在C#中創(chuàng)建和繪制PDF表單的方法步驟
在日常開發(fā)中,我們經(jīng)常需要處理各種文檔,其中PDF因其跨平臺(tái)、安全性高而成為企業(yè)級(jí)應(yīng)用中不可或缺的一部分,然而,手動(dòng)創(chuàng)建、填寫或管理PDF表單無(wú)疑是一項(xiàng)耗時(shí)且易出錯(cuò)的任務(wù),所以本文給大家介紹了如何使用Spire.PDF在C#中創(chuàng)建和繪制 PDF 表單,需要的朋友可以參考下2025-08-08

