亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

WPF輕松實現(xiàn)進度條的示例代碼

 更新時間:2024年12月05日 09:17:09   作者:小碼編匠  
WPF中的ProgressBar控件用于表示任務進度,適用于文件下載、數(shù)據(jù)處理等場景,本文將通過XAML和C#代碼展示如何創(chuàng)建一個基本的WPF進度條,并演示如何通過事件處理程序更新進度條的值來模擬耗時操作,感興趣的小伙伴跟著小編一起來看看吧

前言

本文講述如何在軟件啟動和窗體按鈕操作時彈出進度條。

運行環(huán)境:Win10、VS2022

一、新建WPF項目

二、新建WPF窗體。

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

2、設置窗體屬性、樣式。

<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"是不要窗體頂部內容;

2.3、AllowsTransparency="True"是允許窗體透明;

2.4、Background="Transparent"是設置透明背景;

2.5、ShowInTaskbar="False"是指示此窗口是否出現(xiàn)在任務欄;

2.6、ResizeMode="NoResize"是不可調節(jié)窗體大小。

3、添加進度消息和進度條。

<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, "啟動中,請稍后...");        // 寫入實際處理代碼
            Thread.Sleep(500);
            defProcessBar.SetProcess(defProcessBar, 40, "啟動中,請稍后...");
            Thread.Sleep(500);
            defProcessBar.SetProcess(defProcessBar, 60, "啟動中,請稍后...");
            Thread.Sleep(500);
            defProcessBar.SetProcess(defProcessBar, 80, "啟動中,請稍后...");
            Thread.Sleep(500);

            defProcessBar.Dispatcher.Invoke(() =>
            {
                defProcessBar.Close();
            });
        });
        defProcessBar.ShowDialog();

        if (isFinish)
        {
            base.OnStartup(e);
            Application.Current.ShutdownMode = ShutdownMode.OnMainWindowClose;
        }
        else
        {
            this.Shutdown();
        }
    }
}

啟動軟件查看效果。

四、在主窗體 MainWindow 中彈出進度條。

1、添加按鈕。

2、添加按鈕事件處理。

private void Button_Click(object sender, RoutedEventArgs e)
{
    DefProcessBar defProcessBar = new DefProcessBar();
    Task.Run(() =>
    {
        defProcessBar.SetProcess(defProcessBar, 20, "啟動中,請稍后...");
        Thread.Sleep(500);
        defProcessBar.SetProcess(defProcessBar, 40, "啟動中,請稍后...");
        Thread.Sleep(500);
        defProcessBar.SetProcess(defProcessBar, 60, "啟動中,請稍后...");
        Thread.Sleep(500);
        defProcessBar.SetProcess(defProcessBar, 80, "啟動中,請稍后...");      //寫入實際處理代碼
        Thread.Sleep(500);

        defProcessBar.Dispatcher.Invoke(() =>
        {
            defProcessBar.Close();
        });
    });
    defProcessBar.ShowDialog();
}

3、效果跟軟件啟動時一樣。

缺點:所有邏輯必須放到異步處理。

最后

以上就是WPF輕松實現(xiàn)進度條的示例代碼的詳細內容,更多關于WPF實現(xiàn)進度條的資料請關注腳本之家其它相關文章!

相關文章

  • C#+EmguCV使用攝像頭讀取、保存視頻

    C#+EmguCV使用攝像頭讀取、保存視頻

    這篇文章主要為大家詳細介紹了C#+EmguCV使用攝像頭讀取、保存視頻,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C# paddlerocrsharp識別身份證號的實現(xiàn)示例

    C# paddlerocrsharp識別身份證號的實現(xiàn)示例

    paddlerocrsharp可以進行圖片識別,本文主要介紹了C# paddlerocrsharp識別身份證號的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • WPF實現(xiàn)Badge標識的示例代碼

    WPF實現(xiàn)Badge標識的示例代碼

    這篇文章主要為大家詳細介紹了WPF如何實現(xiàn)Badge標識,文中的示例代碼講解詳細,對我們學習或工作有一定幫助,感興趣的小伙伴可以了解一下
    2023-06-06
  • c# 獲取機器唯一識別碼的示例

    c# 獲取機器唯一識別碼的示例

    這篇文章主要介紹了c# 獲取機器唯一識別碼的示例,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-03-03
  • 關于Unity中RectTransform與transform的區(qū)別

    關于Unity中RectTransform與transform的區(qū)別

    這篇文章主要介紹了Unity中RectTransform與transform的區(qū)別,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • C#通過Win32API設置客戶端系統(tǒng)時間的方法詳解

    C#通過Win32API設置客戶端系統(tǒng)時間的方法詳解

    在日常工作中,有時可能會需要獲取或修改客戶端電腦的系統(tǒng)時間,比如軟件設置了Licence有效期,本文以一個簡單的小例子,簡述如何通過C#獲取和設置客戶端電腦的系統(tǒng)時間,僅供學習分享使用,如有不足之處,還請指正,需要的朋友可以參考下
    2024-06-06
  • C#如何實現(xiàn)對sql server數(shù)據(jù)庫的增刪改查

    C#如何實現(xiàn)對sql server數(shù)據(jù)庫的增刪改查

    本文的主要內容是C#實現(xiàn)對sql server數(shù)據(jù)庫的增刪改查,示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-08-08
  • Unity多語言轉換工具的實現(xiàn)

    Unity多語言轉換工具的實現(xiàn)

    這篇文章主要為大家詳細介紹了Unity多語言轉換工具的實現(xiàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 微信公眾平臺開發(fā)教程(三) 基礎框架搭建

    微信公眾平臺開發(fā)教程(三) 基礎框架搭建

    這篇文章主要介紹了微信公眾平臺開發(fā)教程(三) 基礎框架搭建,具有一定的參考價值,有需要的可以了解一下。
    2016-12-12
  • c#中判斷類是否繼承于泛型基類

    c#中判斷類是否繼承于泛型基類

    這篇文章主要介紹了c#中判斷類是否繼承于泛型基類,最簡單的辦法肯定是typeof(b).baseType=typeof(a<string>)這樣就可以返回true,但是這種方法時不妥的,下面看看如何解決這個問題呢
    2022-04-04

最新評論