[英]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.