Как поменять цвет форм в c#?
Есть основная форма, то есть меню моей программы.
Создал две кнопки, отвечающие за тему программы, темная или светлая.
this.BackColor = Color.DarkSlateGray; работает только для первой формы.
Как мне можно реализовать смену цвета Form2, чтобы когда я открыл её, цвет был другой.
В button_click добавил вот такой код
F[1].BackColor = Color.FromName("DarkSlateGray");//Меняем цвет в шифровке
F[1].Controls["button1"].BackColor = Color.FromName("DarkSlateBlue");//главная форма в этой коллекции первая, ее индекс 0, меняем ее цвет
F[2].BackColor = Color.FromName("DarkSlateGray");//главная форма в этой коллекции первая, ее индекс 0, меняем ее цвет
Но он меняет цвет только когда форма 1 и 2 открыты, а я хочу чтобы когда я открыл Form1 или Form2 сразу был другой цвет, измененный ранее по нажатию кнопки
Ответы (2 шт):
Просто как вариант - кнопки меняют режим bool isDarkMode на true или false, а при загрузке формы проверяется установлен тёмный режим или светлый
void Button1_Click(object sender, EventArgs e)
{
isDarkMode = true;
Form1.BackColor = Color.FromName("DarkSlateGray");
Form1.Controls["button1"].BackColor = Color.FromName("DarkSlateBlue");
Form2.BackColor = Color.FromName("DarkSlateGray");
}
void Button2_Click(object sender, EventArgs e)
{
isDarkMode = false;
Form1.BackColor = Color.FromName("LightGray");
Form1.Controls["button1"].BackColor = Color.FromName("LightGray");
Form2.BackColor = Color.FromName("LightGray");
}
void Form2_Load(object sender, EventArgs e)
{
if (isDarkMode)
{
Form2.BackColor = Color.FromName("DarkSlateGray");
}
}
Сделайте параметр(ы) в конструкторе второй формы. Например, так:
public class Form2 : Form
{
public Form2(Color backColor)
{
this.BackColor = backColor;
}
}
И при создании этой формы задавайте нужное значение:
var form2 = new Form2(Color.DarkSlateGray);
form2.Show();
Для справки: свойство BackColor относится к так называемым AmbientProperties. Если оно не задано явно, то берётся значение родительского контрола. Следовательно, достаточно задать значение свойству формы и все помещённые на эту форму контролы тоже получат это значение (если оно не переопределено конкретно в них).