【问题标题】:Application.Restart ruins my settingsApplication.Restart 破坏了我的设置
【发布时间】:2013-12-12 05:57:51
【问题描述】:

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

当应用启动时,它会检查选择了哪个主题:

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

Form1http://www.sendspace.com/file/jerayu

Form2http://www.sendspace.com/file/p5twne

【问题讨论】:

  • 什么时候调用 Save()?如果您在调用 Application.Start() 之前从未这样做过,那么您只需重新启动而不保存设置。
  • 当我完成配置设置时(当表单设置关闭时),我确实调用了 Save()。我什至也尝试过双重保存(在主窗体关闭时保存),但没有成功。

标签: c# application-restart


【解决方案1】:

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

希望这可以指导您。

-M

【讨论】:

    猜你喜欢
    • 2019-01-14
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多