2009-11-20 3 views
1

누가 동적 데이터를 저장할 수 없는지 내게 말해 줄 수 있습니까 Settings.Default.Context?C#에서 기본 컨텍스트 설정을 저장하는 방법?

내 코드 :

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

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

내가 앗피 모든 것이 잘 작동 다시로드하지 마십시오. 그러나 다시로드 한 후 응용 프로그램 및 호출 만

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

Object reference not set to an instance of an object.과 같은 오류가 나타납니다. 왜 컨텍스트를 저장할 수 없습니까? 뭐가 문제 야?

나는 새로운 키와 값을 동적으로 추가 할 수 있기 때문에 절약 할 수 있습니다.

답변

1

이 방법으로 새 ​​설정을 추가 할 수 있다고 생각하지 않습니다. 프로그램 자체의 리소스이기 때문에 읽기만 가능합니다.

당신이 할 수있는 일은 System.Collections.Specialized.StringCollection 인 설정을 한 다음 항목을 추가하십시오. 이러한 추가 항목은 앱이 종료 된 후에도 계속 남아 있습니다.

하지만 완전히 새로운 설정을하고 아직 그 설정을 유지할 수는 없습니다.

0

uhm 설정의 유형은 무엇입니까? 어쨌든 난 당신이 작성하는 .Context의 ..try을 놓친 생각 :

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

문제는 값이 설정 사용자 범위입니다 만 응용 프로그램 세션의 기간 동안 지속되는 것입니다. 디자인 시간 (프로젝트 속성 -> 설정 탭)에서만 변경하거나 응용 프로그램 세션간에 .exe.config 파일을 변경하여 응용 프로그램 범위 설정이 필요하다고 생각합니다 (http://msdn.microsoft.com/en-us/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"; 
    } 
    } 
} 

이 응용 프로그램은 캡션과 단추가 가운데에있는 Form을 만듭니다. 버튼을 클릭하면 .Text (캡션)가 변경되고 양식을 닫을 때 저장됩니다. 다시 실행 응용 프로그램과 새 자막으로 내 텍스트 :)을해야합니다

당신이 완전한 소스 코드가 필요하면 그냥 날 :) 말해

개체 브라우저에서 볼
0

:

공공 재정의 SettingsContext 컨텍스트 {얻을; }

읽기 전용입니까?

+0

읽기 전용이 아닙니다. – Jooj

관련 문제