Zmiana koloru tła wyłączonych elementów.

0

Cześć, napisałem program w c# pod net frameworka 3,5 i zastanawiam się jak zmienić kolory elementów zaznaczonych na czerwono. W internecie nic nie mogłem znaleźć, albo nie jak użyć kodu, który wklejają. Oto zdjęcie:

1234.png

Chodzi o kolor tła wyłączonego comboboxa, tekst wyłączonego checkboxa i sam kwadracik checkboxa, tak, aby nie dawało po oczach.

Dzięki.

0

To jest WinForms?
WPF?

0

Tak dokładnie - formularz Windows Forms

0

Spraw wygląda na prostą ale tak do końca nie jest potrzebujesz tak naprawdę przechwycić event odpowiadający za rysowanie i samemu narysować

        private void button1_Paint(object sender, 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("Oblicz używając wymiarów X i Y", btn.Font, drawBrush, e.ClipRectangle, sf);
            drawBrush.Dispose();
            sf.Dispose();
        }

       private void button1_EnabledChanged(object sender, EventArgs e)
        {
            dynamic btn = (Button)sender;
            btn.ForeColor = btn.Enabled == false ? Color.Green : Color.Black;
        }

Minus jest taki ,że nie odwołasz się potem do button.Text no ale chyba nie powinno to być nie zbędne.

0

Cześć, próbuję uruchomić kod, lecz napotkałem kłopot.
Pokazuje się błąd:

Brak wymaganej przez kompilator składowej „Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create.

Wszedłem w Projekt -> Zarządzaj pakietami NuGet -> wyszukałem Microsoft.CSharp.dll.
Pokazuje się błąd:

Nie można zainstalować pakietu „Microsoft.CSharp 4.7.0”. Próbujesz zainstalować ten pakiet w projekcie, którego celem jest „.NETFramework,Version=v3.5”, ale pakiet nie zawiera żadnych odwołań zestawu ani plików zawartości zgodnych z tą strukturą. Aby uzyskać więcej informacji, skontaktuj się z autorem pakietu.

Znalazłem w internecie, że dynamic można użyć od NET 4.0.

0

Tak chyba prościej:

        private void textBox1_EnableChanged(object sender, EventArgs e)
        {
            textBox2.BackColor = textBox2.Enabled ? Color.Yellow : Color.Red;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            textBox2.Enabled = !textBox2.Enabled;
        }
0

Znalazłem w internecie jak narysować CheckBox. Ma bardzo dużo opcji do konfiguracji. Autor pomysłu nie wkleił kodu i 3,5 godziny klepałem wszystko razem z nim z filmu na YouTubie, ale cóż - chciałem mieć ładnie. No pojawił się kłopot - niestety jest on bardzo wolny. Jeśli mógłby ktoś zobaczyć byłbym wdzięczny.

Są jeszcze inne niedociągnięcia:
a) zaznacza CheckBox gdy nie przekazuje w programie, że jest zaznaczony po kliknięciu na tekst (widać na filmie).
b) przydała by się opcja lub wskazówka jak dodać jeszcze kolor disabled Checkbox.

Bardzo mi się spodobała forma praktycznie dowolnego edytowania pod swoje potrzeby. Niestety tak wolna reakcja dyskwalifikuje ten cały wysiłek ;p.

Oto pliki, które wykonałem: Test.zip

.

gswidwa1 napisał(a):

Tak chyba prościej:

        private void textBox1_EnableChanged(object sender, EventArgs e)
        {
            textBox2.BackColor = textBox2.Enabled ? Color.Yellow : Color.Red;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            textBox2.Enabled = !textBox2.Enabled;
        }

Coś nie mogę tego przełożyć na checkBox - z textBox działa fajnie - pewnie znowu coś mieszam.
Użyłem takiego kodu:

checkBox10.ForeColor = checkBox10.Enabled ? Color.Yellow : Color.Red;
0

Mój przykład działa dla wszystkich kontrolek. Pokaz kod checkboxa

0
        private void checkBox10_EnabledChanged(object sender, EventArgs e)
        {
            checkBox10.ForeColor = checkBox10.Enabled ? Color.Yellow : Color.Red;
        }

        private void comboBox1_EnabledChanged(object sender, EventArgs e)
        {
            comboBox1.BackColor = comboBox1.Enabled ? Color.Yellow : Color.Red;
        }

        private void checkBox11_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox11.Checked == false)
            {
                checkBox10.Enabled = false;
                comboBox1.Enabled = false;
            }
            else
            {
                checkBox10.Enabled = true;
                comboBox1.Enabled = true;
            }
        }

Zmienia kolor tekstu tylko dla włączonego checkBox oraz kolor tła dla włączonego combobox.
Niestety przy wyłączonych kontrolkach nic się nie zmienia i zostają domyślne ustawienia.
Dodam, że tło zmienia okej - (checkBox10.BackColor), niestety napis po wyłączeniu jest nadal czarny.

0
        private void button1_Paint(object sender, PaintEventArgs e)
        {
            Button btn = (Button)sender;
            SolidBrush drawBrush = new SolidBrush(btn.ForeColor);
            StringFormat sf = new StringFormat
            {
                Alignment = StringAlignment.Center,
                LineAlignment = StringAlignment.Center
            };
            btn.Text = string.Empty;
            e.Graphics.DrawString("Oblicz używając wymiarów X i Y", btn.Font, drawBrush, e.ClipRectangle, sf);
            drawBrush.Dispose();
            sf.Dispose();
        }

       private void button1_EnabledChanged(object sender, EventArgs e)
        {
            Button btn = (Button)sender;
            btn.ForeColor = btn.Enabled == false ? Color.Green : Color.Black;
        }

Po prostuj użyj kodu który ci podałem tylko wyrzuć dynamic pisałem na szybko z palca więc nie wiem czy zadziała

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