2015-08-25 3 views
0

Можно ли изменить задний цвет всех форм из одной формы? Как и в моей системе, у меня есть 10 форм и от нажатия кнопки в определенной форме я могу изменить задний цвет всей другой формы и сохранить цвет?Можно ли изменить задний цвет всех форм из одной формы?

+0

Да, вы можете, как вы создаете новую форму? – Shaharyar

+0

Да. Возможно. –

+0

помогите мне пожалуйста :) в главном меню есть кнопка «изменить тему», и когда я нажимаю на нее, я хочу применить определенный цвет (для простоты предположим, что синий). Поэтому я хочу применить темно-синий цвет ко всем формам в моей системе. Как я могу это сделать? –

ответ

1

Принимая ответ Сагара, вы также можете создать статический менеджер форм.

Каждая форма будет регистра сами там и тогда менеджер может сделать всю работу ..

В конструкторах регистрируют формы:

public Form1() 
{ 
    FormManager.registerForm(this); 
    InitializeComponent(); 
} 

и в Closed событий незарегистрированного:

private void Form1_FormClosed(object sender, FormClosedEventArgs e) 
{ 
    FormManager.unRegisterForm(this); 
} 

Теперь, когда вы хотите, чтобы вы может изменить все формы BackColors так:

private void button1_Click(object sender, EventArgs e) 
{ 
    FormManager.setAllBackcolors(Color.Green); 
} 

Вот минимальный класс формы, менеджер:

public static class FormManager 
{ 

    private static List<Form> formList = new List<Form>(); 

    public static void registerForm(Form form) 
    { 
     if (!formList.Contains(form)) formList.Add(form); 
    } 

    public static void unRegisterForm(Form form) 
    { 
     if (formList.Contains(form)) formList.Remove(form); 
    } 


    public static void setAllBackcolors(Color backColor) 
    { 
     foreach (Form f in formList) if (f != null) f.BackColor = backColor; 
    } 

} 

Если вы черпаете свои формы от общего предка регистрирующего & Дерегистрация будет закодирована только один раз в базовая форма.

Конечно менеджер может быть использован для выполнения других задач, а также, как найти или формы заказа ..

Если вы хотите, чтобы повлиять на вновь открывающиеся формы вы можете сохранить цвет в менеджере и добавить строку в зарегистрировать метод.

1

Для этого вы можете указать одну переменную static в глобальном классе для заднего цвета и изменить ее при нажатии кнопки.

Например. На вашем каждый код формы будет что-то вроде этого ..

Form1.BackColor = globalClass.BackColor; 

В GlobalClass.cs:

public static string BackColor="Red"; 

на кнопке мыши определенной формы:

globalClass.BackColor = "Black"; 

Это один из возможных способ сделать это.

Соответственно, вы можете применить свою логику.

+0

Каждая форма также может использовать один и тот же глобальный цвет чтобы инициализировать свой собственный цвет при открытии .. – TaW

+0

, но он хочет нажать одну кнопку в одной форме, чтобы изменить цвет –

+0

Что относительно уже открытых форм? – Shaharyar

Смежные вопросы