Video Series: Display MS Access Database Records in C# DataGridView

The best way to view data from a database table is to display it in the form of a table. This tutorial will teach you exactly how to get records from Microsoft Access Database and display it in DataGridView control.

English

Urdu

How to use Delay in WPF

The problem at hand is that we want to simulate a Progress Bar as if there is some processing going on. If you simply apply a loop to change the value of the progress bar, the loop will end without the user even noticing any change. For the delay we need to use the DispatcherTimer that is available in the System.Windows.Threading namespace.

using System.Windows.Threading;

First have a look at the XAML code:

<Grid>
    <ProgressBar Minimum="0" Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Maximum="100" Name="progressBar1" VerticalAlignment="Top" Width="479" />
    <Button Click="button1_Click" Content="Button" Height="23" HorizontalAlignment="Left" Margin="230,105,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
</Grid>

We simply have added a ProgressBar named progressBar1, Minimum as 0 and Maximum as 100. Also we have a Button with a click event named button1_Click.

Now what we need is that when the user clicks on the button, the progress bar starts simulating. So that code will be placed in the button1_Click method.

private void button1_Click(object sender, RoutedEventArgs e)
{
    DispatcherTimer delay;
    delay = new DispatcherTimer(DispatcherPriority.Normal);
    delay.Interval = TimeSpan.FromMilliseconds(30);
    delay.Tick += new EventHandler(delay_Tick);
    delay.Start();
}

We have created an object of the DispatcherTimer named delay and set its Interval to 30 milliseconds. Next we have created handler for the Tick event (this event will be called every 30 milliseconds in our case). Finally we have started the delay timer.

In the Tick event handler we need the following code:

private void delay_Tick(object sender, EventArgs e)
{
    progressBar1.Value += 5;
    if (progressBar1.Value >= 100)
       ((System.Windows.Threading.DispatcherTimer)sender).Stop();
}

For every Tick event, the progressBar1 will progress with a value of 5. To stop this timer after the progressBar1 has reached its destination we need to stop the timer.

Hopefully this was easy. Post your questions if you have any.