2014-03-24 72 views
1

如何創建一個最初未定義的變量(string name = "";),並且當用戶選擇一個值(在本例中爲目錄的路徑)時,值(路徑)爲保存在內存中,所以不需要再次輸入。這個值應該被存儲,這樣當我的應用程序重新啓動時,它仍然可用。覆蓋變量並保持該值c#

這是我的全局變量:

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; 
    } 
} 
+0

是的,我不明白「一旦程序發佈該變量保存該值,並沒有超出它。」 - 你可以嘗試這個詞嗎? –

+0

請不要因爲英語不好而降低OP水平 - 讓我們拭目以待,看看我們是否能夠首先對此進行改寫! –

+0

@ChrisBallard我編輯帖子 – user3448528

回答

1

有沒有這樣的事,作爲一個「永久的全局變量」。相反,使用.NET框架的內置配置機制。

在Visual Studio中,打開項目屬性並導航到選項卡「設置」。現在右側窗格中可能有一個鏈接,表示迄今爲止尚未創建默認設置。點擊鏈接創建設置。

然後,通過輸入名稱並選擇類型(字符串,int等)來添加新的用戶設置。請確保它是用戶設置,而不是應用程序設置,因爲應用程序設置是隻讀的。從此,您可以使用Properties.Settings.Default.SettingName像變量一樣訪問此設置。

因此,在程序/機器重新啓動之間永久保存設置,請使用Properties.Settings.Default.Save()

0

您可以使用ResourceManager保存您的配置,當你停止你的程序就會啓動加載設置正確,如下所示:

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

爲什麼大家都使用'ResourceManager'而不是使用'Properties.Settings'? –

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); 
     } 
    } 
} 
+0

Nooo!不要使用註冊表! .NET應用程序帶有一個非常方便的配置機制!停止污染註冊表... –

+0

每個對他自己的:) - OP - 你可能想要檢查@ThorstenDittmar的答案 - 也可以用這種方法,但使用'Properties.Settings ...'而不是'Registry' –