2008-10-14 6 views
1

나는로드/임의의 키를 기준으로 동적 설정을 저장하는 방법이 있나요 등, 사용자 지정 방법에 대한 부분 클래스 내 윈폼 응용 프로그램이라고 Settings.settings에서 "설정 파일"이?윈폼 - 동적로드/저장 설정

예를 들어, 내가 저장/열 너비를로드하려는 내 응용 프로그램에서 일부의 ListView있다; 각 목록보기에 대한 각 열에 대한 너비 설정을 만드는 대신 너비를 자동으로 저장/저장하는 간단한 방법을 원합니다. 내가 오류 얻을 그 코드를 실행하는 경우

internal sealed partial class Settings 
{ 
    public void SetListViewColumnWidths(ListView listView) 
    { 
     String baseKey = listView.Name; 
     foreach (ColumnHeader h in listView.Columns) 
     { 
      String key = String.Format("{0}-{1}", baseKey, h.Index); 
      this[key] = h.Width; 
     } 
    } 
} 

: 아래

내가 시도했던 저장 방법의 예입니다 "설정 속성은 'TestsListView-0'을 (를) 찾을 수 없습니다를."
제가 누락 된 것이 있습니까?

답변

1

Xml Serializable 개체에 열 너비 설정을 저장합니다. 즉, IXmlSerializable을 구현하는 항목은 Settings.settings에서 해당 유형의 단일 설정 항목을 만듭니다.

좋은 옵션은 아마도 Xml Serializable Dictionary 일 것입니다. google search은이를 구현하는 방법을 설명하는 여러 블로그 게시물을 발견했습니다. 다른 답변에서 언급 한 바와 같이

이 객체가 사용자 설정 있는지 확인해야합니다. 설정 인스턴스를 초기화해야 할 수도 있습니다. 즉, XmlSerializableDictionary() 인스턴스를 만들고 설정이 null이면 설정에 할당합니다. 설정 하위 시스템은 복잡한 설정 개체의 기본 인스턴스를 만들지 않습니다.

또한 이러한 설정을 어셈블리 버전간에 유지하려는 경우 (즉, 업그레이드 가능) 응용 프로그램 시작시 설정을 업그레이드해야합니다. 자세한 내용은 Miha Markič's 블로그 및 Raghavendra Prabhu's 블로그를 참조하십시오.

0

나는 오류

설정 속성 '키'를 찾을 수 없습니다에게 생각합니다.

'key'값이 설정 파일에 존재하지 않으므로 발생합니다 (상당히 자명합니다).

필자가 알고있는 한 설정 값을 프로그래밍 방식으로 추가 할 수 없기 때문에 파일에 필요한 모든 설정을 추가 조사해야 할 수도 있습니다. 변경 사항을 저장하기 위해 지정한 코드를 사용할 수 있습니다. 변경 사항을 저장하려면

, 당신은 '사용자'설정이 아니라 '응용 프로그램'있는지 확인해야합니다.

설정 파일은 매우 간단한 XML, 그래서 당신이 파일에 직접 XML을 작성하여 문제를 공격 할 수 있습니다,하지만 난 그것을 해본 적이 없다, 그래서 반드시이 작동합니다 확신 할 수 없거나 그 접근법을 추천하십시오.

http://msdn.microsoft.com/en-us/library/cftf714c.aspx로 시작하는 MSDN 링크입니다.

0

사용자 설정에서 Settings.Save() 또는 유사한 작업을 수행 할 수 있지만 이러한 설정은 예상대로 app 디렉토리의 xxx.exe.config 파일에 유지되지 않습니다. 그들은 실제로 사용자 폴더 내부 깊숙한 곳에 있습니다 (드라이브에서 xxx.exe.config 파일을 찾으십시오). 다음 번에 app 디렉토리에서 xxx.exe.config를 수동으로 변경하면 변경 사항이 신비하게 적용되지 않습니다 (시스템은 여전히 ​​사용자 디렉토리에 저장된 xxx.exe.config를 사용하고 있습니다).

관련 문제