Application.Restart破坏了我的设置

时间:2013-11-26 21:15:43

标签: c# application-restart

我正在开发一个供个人使用的项目(简单的电话簿)。它有一个可以自定义的选项(更改表单的图标,按钮的图像,图片框的图像等)。这可以通过以下方式工作:

当应用程序启动时,它会检查选择的主题:

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)),如果有人想看看它:

Form1 http://www.sendspace.com/file/jerayu

Form2 http://www.sendspace.com/file/p5twne

1 个答案:

答案 0 :(得分:0)

您需要在应用程序进程之外保留。这可以通过应用程序设置,资源文件或某种配置文件(xml,inf)来完成。

希望这能指导你。

-M