Dziedziczenie koloru interfejsu w windows forms

0

Chciałabym zmienić kolor WSZYSTKICH form. Już użytkownik może zmieniać ale działa to tylko dla jednej formy.
Jak można zapisać dziedziczenie w Windows Forms ?

0

Napisz coś więcej bo nie wiem czy o to Ci chodziło?

public class ColorForm : Form  //dziedziczenie
    {
        public ColorForm()
        {
            this.BackColor = Color.Aqua;  // zmiana koloru
        }
    }
0
this.BackColor = Color.Transparent;

ew.:

protected override void OnParentChanged(EventArgs e) {
        if (this.Parent != null) this.BackColor = this.Parent.BackColor;
        base.OnParentChanged(e);
    }
    protected override void OnParentBackColorChanged(EventArgs e) {
        this.BackColor = this.Parent.BackColor;
        base.OnParentBackColorChanged(e);
    }
0

Dokładnie mam tak:

 private void zmieńKolorToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {

                this.BackColor = colorDialog1.Color;            
            }
        }

I koniecznie muszę za pomocą dziedziczenia przekazać to do pozostałych 4 form :(

0

Dziedziczenie działa w czasie kompilacji, nie w czasie działania programu.

Musisz kolor w pętli ustawić wszystkim formom osobno.
Listę otwartych okien znajdziesz pod Application.OpenForms.

            foreach (Form f in Application.OpenForms)
                f.BackColor = Color.AliceBlue;
0

Mogę tego użyć tak jak poprzedniego, czyli po wybraniu koloru dzięki colorDialog1 ?

 public void zmieńKolorToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (colorDialog1.ShowDialog() == DialogResult.OK)
            {
                foreach (Form f in Application.OpenForms)
                this.BackColor = colorDialog1.Color;
                
            }
        } 
1

Bardzo mi się takie rozwiązanie nie podoba, ale chyba o takie coś ci chodziło. Proszę bardzo, z dziedziczeniem:

ColorForm.cs

using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public class ColorForm : Form
    {
        public ColorForm()
        {
            BackColor = GlobalColor;
        }

        protected static Color GlobalColor
        {
            get
            {
                return _GlobalColor;
            }
            set
            {
                _GlobalColor = value;
                foreach (Form form in Application.OpenForms)
                    if (form is ColorForm)
                        form.BackColor = _GlobalColor;
            }
        }

        private static Color _GlobalColor = SystemColors.Control;
    }
}

Form2.cs

...

public partial class Form2 : ColorForm

...

        private void button1_Click(object sender, EventArgs e)
        {
            GlobalColor = Color.AliceBlue;
        }

...
0

Bardzo bardzo bardzo bardzo dziękuję @Azarien :) :) :) HURA!!! <3

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