В моем приложении у меня есть возможность немного настроить отображение. В основном, теперь речь идет об изменении изображений кнопок и изображений, изменении значков формы и т. Д. Как вы можете видеть в коде, приведенном ниже. Таким образом, в данном случае, я сделал это, просто загружая кучу ресурсов (изображений), а затем, когда я меняю тему:Изменение кнопок и картинок «BackColor во всех формах»
if (Properties.Settings.Default.Theme == "Purple")
{
foreach (var form in Application.OpenForms.Cast<Form>())
{
form.Icon = Properties.Resources.Purple;
}
Main f1 = (Main)Application.OpenForms["Main"];
Settings f2 = (Settings)Application.OpenForms["Settings"];
f1.btn_Exit.Image = Properties.Resources.EXIT_purple;
f2.btn_SaveSettings.Image = Properties.Resources.SaveSettings_purple;
f1.pictureBox1.Image = Properties.Resources.Preview_purple;
}
Это значительно увеличивает размер приложения, поэтому я пришел с изменением BackColor вместо загрузки других изображений. Я попытался решить эту проблему следующим образом:
if (Properties.Settings.Default.Theme == "Purple")
{
foreach (var form in Application.OpenForms.Cast<Form>())
{
form.Icon = Properties.Resources.Purple;
}
Main f1 = (Main)Application.OpenForms["Main"];
Settings f2 = (Settings)Application.OpenForms["Settings"];
f1.btn_Exit.BackColor = Color.FromArgb(164, 57, 226);
f2.btn_SaveSettings.BackColor = Color.FromArgb(164, 57, 226);
f2.pictureBox1.BackColor = Color.FromArgb(164, 57, 226);
}
Таким образом, форма значок должен быть изменен на всех запущенных формах и мне удалось успешно сделать это, но когда дело доходит до кнопок и PictureBoxes, я не являюсь видя любые результаты, то есть кнопки и графические ящики просто не меняются. Помимо значков формы, я должен изменить btn_Exit
, расположенный на форме Main
, btn_SaveSettings
, расположенной на форме Settings
, и pictureBox1
, расположенной на форме Settings
.
Как я могу решить эту проблему?
Что такое 'btn_Exit'? Свойство 'Main' возвращает что? И идея с Themeing немного неправильна, представьте, что у вас есть 100 форм и 10 кнопок на каждом .. должен быть довольно какой-то интерфейс или компонент, похожий на свойство «ToolTip», прикрепляющее «Themeable = true» и регистрирующий элемент управления, поэтому вы просто проходите все зарегистрированные элементы управления в одном цикле и сразу меняют свои свойства. – Sinatr
btn_Exit - кнопка, расположенная в форме с именем Main. Я не знаю, как точно ответить на этот вопрос. В любом случае, я вижу, откуда вы, и я знаю, что это не лучшее решение, но оно работает для меня. Есть ли у вас какие-либо предложения, как я могу получить желаемые результаты в моем случае? –
Я попытаюсь угадать, какие рисунки покрывают всю область кнопок или pictureBoxes, поэтому вы не видите результат изменения 'BackColor'. – Sinatr