我正在开发一个供个人使用的项目(简单电话簿)。它有一个自定义选项(更改表单的图标、按钮的图像、图片框的图像等)。它的工作方式如下:
当应用程序启动时,它会检查选择了哪个主题:
private void Main_Load(object sender, EventArgs e)
{
Settings f2 = new Settings();
ThemeCheck();
}
...其中 ThemeCheck() 是:
void ThemeCheck()
{
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;
}
if (Properties.Settings.Default.Theme == "Blue")
{
foreach (var form in Application.OpenForms.Cast<Form>())
{
form.Icon = Properties.Resources.Blue;
}
Main f1 = (Main)Application.OpenForms["Main"];
Settings f2 = (Settings)Application.OpenForms["Settings"];
f1.btn_Exit.Image = Properties.Resources.EXIT_blue;
}
}
...等等,对于每种颜色(有 10 种不同的颜色),在这里复制整个代码会太长。
尽管如此,我还是成功地更改了主题,但是当我重新启动应用程序时,它会切换到一个随机主题(总是蓝色 - 可能是因为它是第一个主题)。
有没有办法我可以处理这个?我希望即使在重新启动应用程序后也能设置所选主题。基本上,如果选择了紫色主题,我希望它在重启后也保持紫色。
如果有人想看一下,我已将整个代码上传到两个 txt 文件中(两种形式 - 主要的(Form1)和配置设置的(Form2)):