2

프로젝트> MyProject 속성> 설정에서 MyDouble이라는 이중 설정 형식의 응용 프로그램 설정이 있습니다. 범위는 사용자이고 기본값은 1.5입니다.WinForms 응용 프로그램 설정이 지정되어 있지 않습니다.

전체 응용 프로그램을 살펴보고 값을 표시하는 MessageBoxes를 보았습니다. 이제 클래스 (Form1) 수준 변수를 설정하려고하는 위치를 제외하고 모든 용도를 주석으로 처리했습니다. 이 모양은 다음과 같습니다.

double myDouble = Properties.Settings.Default.MyDouble; 

값은 항상 0입니다. MessageBox myDouble 또는 응용 프로그램을 설정하면 결과는 0입니다.

일부 응용 프로그램 설정이 작동합니다. Form1_Shown 이벤트에서 두 개의 메시지 상자를 호출했습니다.

Properties.Settings.Default.MyDouble.ToString() 

을 다른 용도 : 하나는 사용

Properties.Settings.Default.MyInt.ToString() 

두번째 출력 올바른 값.

이 프로젝트는 C#으로 작성된 WinForms 응용 프로그램입니다. Windows 10 및 Visual Studio 2017 사용. 이 프로젝트의 양식은 이전 프로젝트에서 복사되었지만 영향을 미칠 수 있다고 생각하지 않습니다. 이전 프로젝트의 가치는 동일했습니다. 나는이 응용 프로그램 설정을 직접 입력했습니다. 맞춤법이 올바른지 다시 확인했습니다. 설치 프로젝트를 삭제했습니다. 솔루션을 정리하고 다시 만들었습니다. app.config 파일도 확인했습니다. 나는 틀린 아무것도 보지 않는다. 여기에 있습니다 :

<userSettings> 
     <MyProject.Properties.Settings> 
      <setting name="MyDouble" serializeAs="String"> 
      <value>1.5</value> 
      </setting> 
     </MyProject.Properties.Settings> 
    </userSettings> 

아무도 아이디어가 없으며이를 해결하는 방법이 있습니까?

+0

당신이 설정의 범위를 확인했다 Managing Application Settings (.NET)이 대답 :

은이 페이지를 참조하십시오? – user12345

+0

@ user12345 했어. 내 질문에 사용자 범위가 있음을 반영하도록 업데이트했습니다. 모든 응용 프로그램 설정에는 사용자 범위가 있습니다. – DavidG

+0

기본값이 1.5이고 값이 0 일 때.0이면 설정을 적어도 한 번 이상 성공적으로 저장했습니다. 그것은 여러분이 좋아하는 가치가 아니라는 것입니다. user.config 파일을 편집하여 (일시적으로 발생하는) 문제를 해결할 수 있습니다. c : \ users \ yourname \ appdata \ local \ projectname \ blablabla에서 쉽게 찾을 수 없습니다. –

답변

2

제 생각에는 뭔가 잘못되었습니다.

솔루션 탐색기에서 .settings 파일을 두 번 클릭하십시오. 이 파일의 기본 이름은 Settings.settings입니다. 설정 디자이너에서 설정의 이름 (MyDouble)을 찾습니다. 각 행은 단일 설정을 나타냅니다.

참조 : Using Settings in C#.

들 :

<setting name="MyDouble" serializeAs="String"> 

그리고 당신은 쓰기 :

double myDouble = Properties.Settings.Default.MyDouble; 

잘못 될 수있다 ... double-String 변환? What is the best way to store user settings for a .NET application?

이 코드보십시오 :

Properties.Settings.Default.MyDouble = 1.5; 
Properties.Settings.Default.Save(); 

을하고 이것을 시도 후 :

var myDouble = Properties.Settings.Default.MyDouble; 
+0

settings.settings 파일이 정확했습니다. 다른 double 및 integer 값은 serialize s string을 말합니다. 그게 무슨 뜻인지는 모르겠다. 솔직히, 나는 지금까지 그 파일을 열지 못했습니다. 제안한 코드가 문제를 해결합니다. 어떻게 든 나는 Visual Studio의 버그에 빠졌다고 생각합니다. 물론 코드를 실행하여 새로운 가치를 설정하고 저장합니다. 이제는 작동합니다. 그 코드 블록은 포함되지 않았다. 감사. 일단 내가 값을 덮어 쓰고 저장하도록 응용 프로그램을 강제로 시도한 이후로 올바른 답변으로 이것을 선택합니다. – DavidG