DispatcherTimer, ProgressBar и ProgressRing

Последнее обновление: 11.02.2016

DispatcherTimer

DispatcherTimer не является элементом управления, однако мы можем его использовать для процессов в графическом приложении, которые должны выполняться с определенной периодичностью. Наиболее важные свойства и методы таймера:

  • Свойство Enabled при значении true указывает, что таймер будет запускаться вместе с формой

  • Свойство Interval устанавливает интервал таймера в виде объекта TimeSpan

  • Метод Start() запускает таймер

  • Метод Stop() останавливает таймер

  • Событие Tick срабатывает по истечении интервала из свойства Interval

Далее на примере индикатора процесса рассмотри использование таймера

ProgressBar

ProgressBar представляет индикатор выполнения какого-либо процесса. Например, зададим следующий ProgressBar:

<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
    <ProgressBar x:Name="progressBar" Maximum="100" Width="300" Height="30" ValueChanged="progressBar_ValueChanged" />
    <TextBlock x:Name="textBlock1" />
</StackPanel>

Свойство Maximum указывает на максимально возможное значение индикатора. При изменении значения генерируется событие ValueChanged. Определим в файле кода для него обработчик:

using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;

namespace ControlsApp
{
    public sealed partial class MainPage : Page
    {
        DispatcherTimer timer;
        public MainPage()
        {
            this.InitializeComponent();
            
            timer = new DispatcherTimer() { Interval = new TimeSpan(0,0,1) }; // 1 секунда
            timer.Tick += Timer_Tick;
            timer.Start();
        }

        private void Timer_Tick(object sender, object e)
        {
            progressBar.Value++;
            if (progressBar.Value == 100)
                timer.Stop();
        }

        private void progressBar_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
        {
            textBlock1.Text = progressBar.Value.ToString();
        }
    }
}

В данном случае при запуске приложения будет запускаться таймер, который будет срабатывать раз в секунду. В обработчике таймера происходит приращение значения индикатора: progressBar.Value++

В ответ на изменение значения индикатора генерируется событие ValueChanged и срабатывает его обработчик, который изменяет текст в текстовом блоке.

ProgressBar в UWP

ProgressRing

ProgressRing представляет кольцо с анимацией, которое отображается во время некоторого длительного процесса:

<ProgressRing x:Name="progressRing" IsActive="True" Width="60" Height="60" />

Если свойство IsActive равно true, значит кольцо будет отображаться. При завершении процесса мы можем программно отключить отображение, задав этому свойству значение false

ProgressRing в UWP
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850