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 ?
Dziedziczenie koloru interfejsu w windows forms
- Rejestracja: dni
- Ostatnio: dni
- Postów: 38
0
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Kraków
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
}
}
- Rejestracja: dni
- Ostatnio: dni
- Postów: 414
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);
}
- Rejestracja: dni
- Ostatnio: dni
- Postów: 38
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 :(
- Rejestracja: dni
- Ostatnio: dni
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;
- Rejestracja: dni
- Ostatnio: dni
- Postów: 38
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;
}
}
- Rejestracja: dni
- Ostatnio: dni
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;
}
...