Początki z C# - zadanie z instrukcji if/else

0

Hej,

Jest to mój pierwszy post na forum :) , zatem Witka wszystkim.

Uczę się od kilku dni (jak się można domyślić, bo skoro już tu piszę :) ) języka C#.

Napotkałem pewien problem przy próbie wykonania prostego przycisku który:
a) sprawdza pole checked, jeżeli jest zaznaczone to:
-zmienia kolor tła tekstu
b) jeżeli nie jest zaznaczone wyświetla komunikat o braku wyboru pola
c) po kolejnym użyciu przycisku i spełnieniu powyższych instrukcji powraca do koloru tła bazowego

Jeżeli dobrze zrozumiałem zadanie, w całość ma się opierać tylko na instrukcjach if / else

Na ten moment wygląda to następująco:

 namespace Zadanie4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (checkBox1.Checked == true)
            {
                label1.BackColor = Color.Blue;
            }
            else
                MessageBox.Show("Pole wyboru nie jest zaznaczone");
        }

    }
} 

Instrukcje z punktu a) jak i b), działają prawidłowo... ale głowie się natomiast jak wykonać c)

Jak wykonać teraz to samo tylko w odwrotną stronę? Hmmm... A dokładniej jak wprowadzić do tego drugie kliknięcie myszą w przycisk
Dodam że będę w dalszym stopniu poszukiwał rozwiązania, aczkolwiek jakby ktoś znalazł moment aby pomóc byłbym wdzięczny ;)
Prosiłbym z góry że jeżeli ktoś już pomoże to żeby nie podawać gotowego rozwiązania, a jedynie trochę mnie nakierować...

Dziękuję za pomoc, Mkubi

1

Dodaj w klasie jakąś zmienną typu bool przy pierwszym kliknięciu ustawić jej wartość np. na true ;) i sprawdzać jej wartość przy drugim kliknięciu jak jest true to zmienić tło na domyślne.

0

Wstyd się przyznać bo to podstawy podstaw, ale nie do końca jest dla mnie jasne co mam wykonać ;p

Generalnie chodzi mi o to jak zapisać w instrukcji " drugie kliknięcie ". Bo jak próbuję wykonać nową instrukcję if po else, to wychodzi kaszanka... Ewentualnie ustawia mi z automatu od razu kolor początkowy, czyli nadpisuje mi kolor z początku instrukcji ...

1
namespace Zadanie4
{
	public partial class Form1 : Form
	{
		public Form1()
		{
			InitializeComponent();
		}

		// DODAJ JAKIEŚ PROPERTY NP.
		public bool CzyKliknieto { get; set; }

		// A teraz tutaj musisz w odpowiednim miejscu ustawić CzyKliknieto na true
		// W innym miejscu ustawić na false po drugim kliknięciu bo rozumiem jak klikniesz po raz trzeci to znowu label ma być niebieski
		// A żeby całość zadziałał musisz dodać jeszcze jednego IF-ELSE
		private void button1_Click(object sender, EventArgs e)
		{
			// IF
			if (checkBox1.Checked == true)
			{
				label1.BackColor = Color.Blue;
				// Ustaw CzyKliknieto
			}
			else
				MessageBox.Show("Pole wyboru nie jest zaznaczone");
			// ELSE
		}
	}
}
1
 namespace Zadanie4
{
    public partial class Form1 : Form
    {
        bool isColored = false;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (checkBox1.Checked == true)
            {
                if(isColored)
                {
                     label1.BackColor = Color.White;
                }
                else
                {
                     label1.BackColor = Color.Blue;
                }
                isColored = !isColored
            }
            else
                MessageBox.Show("Pole wyboru nie jest zaznaczone");
        }
 
    }
} 

o cos takiego chodzilo CI? czy chcesz miec osobny przycisk? Jak osobny to zrob to samo tylko kolor zmien. Mozesz miec funkcje do ktorej bedziesz podawac na jaki kolor chcesz to zmienic i ja wywolywac w obu przyciskach

1

Albo tak...

		bool isColored;
		private void button1_Click(object sender, EventArgs e)
        {
            if (checkBox1.Checked)
            {
	            label1.BackColor = isColored ? Color.White : Color.Blue;
	            isColored = !isColored;
            }
            else
                MessageBox.Show("Pole wyboru nie jest zaznaczone");
        }
0

Dziękuje za wszystkie odpowiedzi :) Zadanie rozwiązane

Poszedłem troszkę bardziej na skróty, ale mniej więcej "a raczej tak samo" jak w przykładzie fasadin'a.

 namespace Zadanie4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (checkBox1.Checked == true)
            {
                if (label1.BackColor == Color.Red)
                {
                    label1.BackColor = Color.Blue;
                }
                else
                {
                    label1.BackColor = Color.Red;
                }
            }
            else
                MessageBox.Show("Pole wyboru nie jest zaznaczone");
        }

    }
}
 

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