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
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