Make a form fade out until it disappears in C#, Part 2

[example]

The example Make a form fade out until it disappears in C# makes a form fade out when the user clicks the form’s Close button, but there are several other ways the user can close the form without it fading out. For example, the user can click the close button (the X) in the form’s upper right corner, open the system menu in the upper left corner and select Close, or press Alt+F4. In all of those cases, the form doesn’t fade out and simply disappears.

Forcing the form to fade out is actually pretty easy. First the program adds the following FormClosing event handler.

// Prevent normal closing.
private void Form1_FormClosing(object sender,
    FormClosingEventArgs e)
{
    // Start the fade out Timer.
    tmrFade.Enabled = true;

    // Only allow close after fading is done.
    e.Cancel = (Opacity > 0);
}

When the form is about to close for any reason, this event handler executes. The code first enables the Timer so the form starts to fade.

Next the code sets e.Cancel to true if the Opacity is greater than 0. That prevents the form from closing unless the fade has finished.

The Timer‘s Tick event handler is the same as before and simply decrements Opacity.

This version of the program could use the same Close button Click event handler as before, but to make the code a bit simpler it uses the following.

// Make the form disappear.
private void btnClose_Click(object sender, EventArgs e)
{
    Close();
}

This code simply tries to close the form. The FormClosing event handler catches the attempt and enables the Timer to start the fade out.


Download Example   Follow me on Twitter   RSS feed   Donate




About RodStephens

Rod Stephens is a software consultant and author who has written more than 30 books and 250 magazine articles covering C#, Visual Basic, Visual Basic for Applications, Delphi, and Java.
This entry was posted in forms, user interface and tagged , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *