Kolor tekstu buttona

0

Siemka, ma ktoś jakiś proste wyjaśnienie jak w Windows Forms zmieniać kolor kliknietego buttona i kolor tekstu na nim, bo kombinuje z różnych stron ale nic nie idzie, ustawiłem sobie czarny button, białą czcionkę, klikam go i czcionka się robi czarna i guzik widać niestety :)

0

Możesz tak spróbować :)

button1.MouseDown += (o, e) => button1.ForeColor = Color.Green;
button1.MouseUp += (o, e) => button1.ForeColor = Color.Red;
0

dzięki za odp, ale nie bardzo rozkminiłem o co chodzi bo mi to "e" w nawiasie podkreśla i nie chce nic wyrzuć konkretnego, mógłbyś zrobić projekt w VS i podesłać? gdzie są 2 buttony tak jak pisałem wyżej, a i żeby nie klikać ogólnie ile sie chce tylko raz to jest jeszcze wrzucone w kod

 button1.Enabled = false;
            button2.Enabled = true;
0

No to w projekcie w oknie kliknij na button, wybierz eventy (tam gdzie masz właściwości u góry powinna być ikonka chyba pioruna), poszukaj 'Click', dwa razy kliknij, utworzy Ci się w kodzie kod :D

Tam wklej ten kod:

button1.ForeColor = Color.Green;
button1.ForeColor = Color.Red;

z posta wyżej

0

Kurde chyba nie zajarze o co chodzi w tym badziewiu xd
a może źle opisuję xd więc jeszcze raz od początku :D
chodzi o to, że mam bawie się w windows forms i robiłem sterowanie arduino przez serial port.
Mam 2 buttony jeden od otwierania portu, drugi od zamykania, Otwierający jest niebieski z białym tekstem, zamykający jest czarny z białym tekstem, żeby nie było można kliknąć 2 razy (bardziej mi zależy na tym w przypadku sterowania diodami niż przy portach ale to się pozniej ogarnie) dlatego użyłem tego

buttonPortOpen.Enabled = false;
buttonPortZamknij.Enabled = true;

Kiedy klikam na buttonPortZamknij czcionka robi się czarna i nie widać tekstu, taka sytuacja nie ma miejsca w przypadku jeżeli nie użyje tego wcześniejszego kawałka kodu ale wtedy mogę dowolną ilość razy otwierać port i za każdym razem pika buzzer bo po otworzeniu portu wysyła zmienną która odpowiada za niego. Robiłem tak jak pisaliście wczesniej ale to nic nie daje, cały czas klikam button i czcionka robi się z białej czarna i g...o widać, próbowałem już sposoby z stack, yt i cholera wie co jeszcze. Niżej kody tych 2 buttonów gdyby ktoś miał jakiś pomysł jeszcze :)

//otwieranie portu
        private void buttonPortOpen_Click(object sender, EventArgs e)
        {
            try
            {
                serialPort1.Open();
                serialPort1.Write("1");
                textBox1.Clear();
                textBox1.AppendText("Port " + serialPort1.PortName + " jest OTWARTY!");
               
                buttonPortOpen.Enabled = false;
                buttonPortZamknij.Enabled = true;
            }
            catch
            {
                MessageBox.Show("Błąd podczas otwierania portu.", "Sterowanie LED Arduino", MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
        }

        //zamykanie portu
        private void buttonPortZamknij_Click(object sender, EventArgs e)
        {
            try
            {
                textBox1.Clear();
                serialPort1.Write("1");
                serialPort1.Close();
                textBox1.AppendText("Port " + serialPort1.PortName + " jest ZAMKNIETY!");
                buttonPortOpen.Enabled = true;
                buttonPortZamknij.Enabled = false;
            }
            catch
            {
                MessageBox.Show("Błąd podczas zamykania portu.", "Sterowanie LED Arduino", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        } 
0

było na stacu ;)

 public Form1()
        {
            InitializeComponent();
            button1.EnabledChanged += Button1_EnabledChanged;
            button2.EnabledChanged += Button1_EnabledChanged;
            button1.Paint += (o,e)=> Button1_Paint("button1",o,e);
            button2.Paint += (o, e) => Button1_Paint("button2", o, e);
        }
        private void Button1_EnabledChanged(object sender, System.EventArgs e)
        {
            var btn =(Button)sender;
            btn.ForeColor = btn.Enabled == false ? Color.White : Color.Black;
            btn.BackColor = btn.Enabled == false ? Color.Black : Color.White;
        }
        private void Button1_Paint(string text,object sender, System.Windows.Forms.PaintEventArgs e)
        {
            dynamic btn = (Button)sender;
            dynamic drawBrush = new SolidBrush(btn.ForeColor);
            dynamic sf = new StringFormat
            {
                Alignment = StringAlignment.Center,
                LineAlignment = StringAlignment.Center
            };
            btn.Text = string.Empty;
            e.Graphics.DrawString(text, btn.Font, drawBrush, e.ClipRectangle, sf);
            drawBrush.Dispose();
            sf.Dispose();

        }
        private void button1_Click(object sender, EventArgs e)
        {
            button2.Enabled = true;
            button1.Enabled = false;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            button1.Enabled = true;
            button2.Enabled = false;
        }
0

Lub niezależnie dla każdego buttona w zdarzeniu Click:

if (button1.BackColor == Color.Red && button1.ForeColor == Color.Blue)
            {
                button1.BackColor = Color.Blue;
                button1.ForeColor = Color.Red;
            }
            else
            {
                button1.BackColor = Color.Red;
                button1.ForeColor = Color.Blue;
            }

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