Własna funkcja migaj - poziom noob

0

Witam

Zacząłem przygodę z C# i chciałem napisać funkcję, która miga groupboxem. Chciałem też, żeby można było ją włączać jednym buttonem i wyłączać drugim, więc jako parametr tej funkcji przyjąłem zmienną bool stan. I niby działa, bo jak kliknę buttona to kolor się zmienia, ale tylko podczas przyciśnięcia. Próbowałem już ustawiac w różnych miejscach stan jako true, ale nie chce współpracować. Gdzie robię błąd ?

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

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public void migaj(bool stan)
        {
            
            if (stan == true) //jesli zmienna stan jest 1 to migaj
            {
                timer1.Start();
                if (groupBox1.BackColor == Color.CadetBlue)
                {
                    groupBox1.BackColor = Color.Azure;
                }
                else groupBox1.BackColor = Color.CadetBlue;
            }
            else //jesli nie to nie migaj, timer stop
            {
                timer1.Stop();
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
             migaj(true); //przekaz do funkcji migaj stan = 1
        }
        private void button2_Click(object sender, EventArgs e)
        {
            migaj(false); //przekaz do funckji migaj stan = 0
        }
    }
}

0

Czytałem to już wcześniej i chyba za trudny przykład dla mnie... co w moim kodzie jest źle ?
Z tego co rozumiem, podczas kliknięcia stan = true, ale zaraz potem wraca do false, wynika to z działania przycisku. Ale jak zatem ustawić stan = true dopóki nie przycisnę drugiego buttona ?

1
    public partial class Form1 : System.Windows.Forms.Form
    {
        private Timer MyTimer = new Timer();
        private bool TimerStatus = false;

        public Form1()
        {
            InitializeComponent();

            this.MyTimer.Interval = 1000;
            this.MyTimer.Elapsed += new ElapsedEventHandler(this.TimerTick);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            switch (this.TimerStatus)
            {
                case true: 
                    this.MyTimer.Enabled = false;
                    this.TimerStatus = false;
                    break;
                case false:
                    this.MyTimer.Enabled = true;
                    this.TimerStatus = true;
                    break;
            }
        }

        private void TimerTick(object sender, ElapsedEventArgs e)
        {
            switch (this.groupBox1.BackColor.ToKnownColor())
            {
                case KnownColor.Red: this.groupBox1.BackColor = Color.White;
                    break;
                case KnownColor.White: this.groupBox1.BackColor = Color.Red;
                    break;
                case KnownColor.Control: this.groupBox1.BackColor = Color.Red;
                    break;
            }
        }
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1