覆盖变量并保持值c#

时间:2014-03-24 12:17:44

标签: c# global-variables

如何创建一个最初未定义的变量(string name = "";),当用户选择一个值(在这种情况下是目录的路径)时,值(路径)保存在内存中,所以不需要再次输入。应存储此值,以便在重新启动应用程序时,它仍然可用。

这是我的全局变量:

static class Global
{
    private static string path = "";

    public static string GlobalVar
    {
        get { return path; }
        set { path = value; }
    }
}

这是我的按钮操作:

private void button1_Click(object sender, EventArgs e)
{
    FolderBrowserDialog FBD = new FolderBrowserDialog();

    if (FBD.ShowDialog() == DialogResult.OK)
    {
        textBox1.Text = FBD.SelectedPath;
        Global.GlobalVar = textBox1.Text;
    }
}

3 个答案:

答案 0 :(得分:1)

没有"永久全局变量"。相反,使用.NET框架的内置配置机制。

在Visual Studio中,打开项目属性并导航到选项卡"设置"。现在可能是右侧窗格上的链接,表示到目前为止尚未创建默认设置。单击链接以创建设置。

然后,通过输入名称并选择类型(字符串,整数等)来添加新用户设置。确保它是用户设置,而不是应用程序设置,因为应用程序设置是只读的。从那时起,您可以使用Properties.Settings.Default.SettingName来访问此设置,就像变量一样。

因此,在程序/机器重启之间永久保存设置,请使用Properties.Settings.Default.Save()

答案 1 :(得分:0)

您可以使用ResourceManager保存配置,当您停止程序时,它会开始正确加载设置,如下所示:

ResourceManager rm = new ResourceManager("RootResourceName",
                                         typeof(SomeClass).Assembly);
string path = rm.GetString("path");

答案 2 :(得分:0)

您可以更新Global类,以确保价值存储在注册表中,例如HKEY_CURRENT_USER下,所以:

public static class Global
{
    private static string path = "";

    public static string GlobalVar
    {
        get 
        { 
            if(String.IsNullOrWhiteSpace(path))
            {
                path = (string)Registry.GetValue(@"HKEY_CURRENT_USER\SOFTWARE\MyApplication", "DirectoryPath", String.Empty); 
            }
            return path; 
        }
        set
        {
            path = value;
            Registry.SetValue(@"HKEY_CURRENT_USER\SOFTWARE\MyApplication", "DirectoryPath", path,
                                RegistryValueKind.String);
        }
    }
}