簡體   English   中英

如何在C#中保存默認上下文設置?

[英]How to save default context settings in c#?

有人可以告訴我為什么我不能在Settings.Default.Context保存動態數據嗎?

我的代碼:

Settings.Default.Context.Add("myKey", "myValue");
Settings.Default.Save();

MessageBox.Show(Settings.Default.Context["myKey"].ToString());<-- This works

如果我不重新加載appi,一切正常。 但是在重新加載應用程序並僅調用之后

MessageBox.Show(Settings.Default.Context["myKey"].ToString());<-- error on appi reload

然后我得到一個錯誤,例如Object reference not set to an instance of an object. 為什么我不能保存上下文? 有什么問題?

我之所以使用這種保存方式,是因為這樣我就可以動態添加新的鍵和值。

我認為您不能以這種方式添加新設置,因為它們只是程序本身的資源,因此只能被讀取。

您可以做的是將其設置為System.Collections.Specialized.StringCollection ,然后向其中添加項目。 應用關閉后,這些額外的物品仍將存在。

但是,您無法進行全新的設置並將其保留在那里。

設置的類型是什么? 無論如何,我認為您錯過了.Context ..嘗試編寫:

Settings.Default.Context["myKey"].ToString()

問題在於該值是一個用戶范圍設置,僅在應用程序會話期間一直存在。 我認為您需要僅在設計時(在“項目屬性”->“設置”選項卡中)或通過在應用程序會話之間更改.exe.config文件才能更改的應用程序作用域設置( http://msdn.microsoft.com/ zh-CN / library / bb397744.aspx

您必須執行以下操作:

    using System.Configuration;

namespace WindowsFormsApplication1
{
  class MySettings : ApplicationSettingsBase
  {
    [UserScopedSetting]
    public string SavedString
    {
      get { return ( string )this["SavedString"]; }
      set { this["SavedString"] = value; }
    }
  } 

  public partial class Form1 : Form
  {
    MySettings m_Settings;

    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Load( object sender, EventArgs e )
    {
      m_Settings = new MySettings();

      Binding b = new Binding( "Text", m_Settings, "SavedString", true, DataSourceUpdateMode.OnPropertyChanged );
      this.DataBindings.Add( b );
    }

    private void Form1_FormClosing( object sender, FormClosingEventArgs e )
    {
      m_Settings.Save();
    }

    private void button1_Click( object sender, EventArgs e )
    {
      this.Text = "My Text";
    }
  }
}

此應用程序創建一個不帶標題的表格,中間有一個按鈕。 單擊按鈕后,.Text(即標題)將更改,並在關閉表單時將其保存。 重新運行該應用程序,您將獲得新標題“我的文本” :)

如果您需要完整的源代碼,請告訴我:)

在對象瀏覽器中查看:

公共重寫SettingsContext上下文{ }

只讀?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM