• WPF任务栏同步进度


    一、概要

    本篇文章主要分享使用TaskbarItemInfo对象(WPF)在window操作系统的任务栏中同步任务进度的功能。

    什么是TaskbarItemInfo对象?

    TaskbarItemInfo类为 Windows 7 任务栏功能提供托管包装。 有关 Windows shell 和本机任务栏 Api 的详细信息,其中taskbar的缩略图操作界面和任务进度更新就是其中的两个部分功能。

    二、实现

    xaml代码

    <Window
    x:Class="TaskProgressBar.MainWindow"
    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:local="clr-namespace:TaskProgressBar"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Window.TaskbarItemInfo>
        <TaskbarItemInfo ProgressState="Normal" />
    </Window.TaskbarItemInfo>
      <Grid>
        <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
            <ProgressBar
                x:Name="MyProgressBar"
                Width="400"
                Height="30" />
            <Button
                x:Name="MyBtn"
                Width="80"
                Height="25"
                Margin="10"
                Click="MyBtn_Click"
                Content="Start" />
        </StackPanel>
       </Grid>
    </Window>

    TaskbarItemInfo对象中ProgressState枚举字段。我们这里只是正常的显示进度那么枚举为Normal即可。

    • Error 3
      任务栏按钮中显示红色的进度指示器。
    • Indeterminate 1
      任务栏按钮中显示闪烁的绿色进度指示器。
    • None 0
      任务栏按钮中未显示进度指示器。
    • Normal 2
      任务栏按钮中显示绿色的进度指示器。
    • Paused 4
      任务栏按钮中显示黄色的进度指示器。

    c#代码

    public MainWindow()
        {
            InitializeComponent();
            MyProgressBar.Minimum = 0;
            MyProgressBar.Maximum = 100;
        }
    
        private async void Update()
        {
            while (true)
            {
                if (MyProgressBar.Value == MyProgressBar.Maximum)
                {
                    break;
                }
                MyProgressBar.Value += 10;
                TaskbarItemInfo.ProgressValue = MyProgressBar.Value / MyProgressBar.Maximum;
                await Task.Delay(500);
            }
        }
    
        private void MyBtn_Click(object sender, RoutedEventArgs e)
        {
            Update();
        }
  • 相关阅读:
    队列与栈的综合实现
    枚举属性和不可枚举属性
    Ajax状态值及状态码
    jquery版滑块导航栏
    js版面向对象图片放大镜
    jq封装淘宝图片轮播插件
    前端必备的js知识点(转载)
    如何有效地解决ie7,IE8不支持document.getElmentsByClassName的问题
    mysql的基本命令行操作
    jquery版楼层滚动特效
  • 原文地址:https://www.cnblogs.com/justzhuzhu/p/14941547.html
Copyright © 2020-2023  润新知