Unser Programm soll geschlossen werden können. 

Wir ändern unsere Endlosschleife wie folgt:

while (true) in while (Visible)

while (Visible) läuft, solange das Formular sichtbar ist.

 

Wenn wir das Formular mit einem Klick auf das X-Kästchen beenden, können wir auch wieder in den Bearbeitungsmodus zurückkehren. 

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace projekt4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int x = 0;

        private void button1_Click(object sender, EventArgs e)
        {
            while (Visible) // Solange das Formular sichtbar ist
            {
                for (x = 0; x <= 255; x++)
                {
                    this.BackColor = Color.FromArgb(x, 255 - x, x); //RGB-Farben

                    Application.DoEvents();

                    System.Threading.Thread.Sleep(1); //10ms Verzögerung
                }
                for (x = 255; x >= 0; x--)
                {
                    this.BackColor = Color.FromArgb(x, 255 - x, x); //RGB-Farben

                    Application.DoEvents();

                    System.Threading.Thread.Sleep(1); //10ms Verzögerung
                }
            }
        }
    }
}

 

Wenn Sie das Programm beenden, gibt es aber eine Verzögerung von ein paar Sekunden, bevor die IDE wieder in den Bearbeitungsmodus wechselt.

Die Verzögerung tritt ein, weil die for-Schleife zuerst enden muss, bevor die while-Schleife prüfen kann, ob Visible immer noch true ist.

Um diese Verzögerung auszuschalten, müssten wird die Prüfung (Ob Visible = true) direkt in der for-Schleife durchführen.

for (x = 0; x <= 255 && Visible; x++)