반응형

오늘 소개해 드릴 포스팅은 C# 에서 어플리케이션을 만들때 디렉토리 입력창이나 각종 설정들에 대하여
마지막으로 실행했던 설정이 다음번에 다시 실행했을 때 남아있도록 해주는 기능입니다.

매번 경로나 설정을 바꿀 필요가 없다면 마지막에 설정했던 항목이 남아있는 것이 편리하겠죠. 반대로 프로그램 동작시 마다 매번 경로를 입력하든 설정 값들을 일일이 세팅을 해주어야 한다면 무척 불편한 것입니다.


실제로 일반적인 응용 프로그램들에서도 쉽게 볼수 있는 중요한 기능이기도 합니다.

 

자 한번 만들어 보겠습니다.

먼저 본인이 저장하고 싶은 항목을 구성해야 합니다.
저는 적당히 아래와 같은 의미로 저장을 해보겠습니다.

  • string : 디렉토리 주소
  • boolean : 하위폴더까지 포함 여부
  • integer : 분할 개수


요렇게 각각 하나씩 3가지를 해보기로 하겠습니다.

새로 공부하시는 분은 새로운 프로젝트를 생성해주시고요. 만약 기존 프로젝트에 본 기능을 붙이실 분은 해당 프로젝트를 여신 뒤에 진행하시면 됩니다. 

저는 임시로 새로운 프로젝트를 하나 만들어 보겠습니다. 그리고 위에서 말씀드린 내용을 설정하고 저장해보기 위한 간단한 UI 를 추가했습니다.



그 다음 비주얼 스튜디오 오측 솔루션 탐색기에서 현재 프로젝트의 프라퍼티 쪽을 확인해 주세요. 


프라퍼티 하위에 Settings.settings 라는 항목이 보이시나요?



해당 항목을 더블클릭해 줍니다.

다음에 이 설정을 가져올 수 있다고 써있네요.



그럼 위와 같은 데이터 입력 창이 나오는데요. 제일 좌측은 해당 값의 변수가 될 이름, 
두번째는 데이터의 형식이며 드롭다운 메뉴를 눌러 선택이 가능합니다.
범위는 사용자로 두시면 되고 제일 우측 값 부분에 최초 저장될 값을 임시로 넣어 두면 됩니다.

저는 위의 3가지 설정을 저장할 예정이므로 위와같이 3가지 타입의 변수를 정해 주었습니다.

 

자 이제 Form 이 Load 될 때 이 설정 값들을 가져오도록 해보겠습니다.

먼저 UI 디자인하는 화면에서 타이틀바를 더블클릭 해주면 Form load 함수가 생성이 됩니다. 생성된 함수를 아래와 같이 작성합니다.

private void Form1_Load(object sender, EventArgs e)
{
  textBox1.Text = Properties.Settings.Default.myPath;
  checkBox1.Checked = Properties.Settings.Default.myCheck;
  numericUpDown1.Value = Properties.Settings.Default.myNumber;
}

당연히 본인이 작성한 설정의 이름과 UI 의 이름을 이용하여 작성을 해야겠죠?

이렇게 작성한 뒤 실행해보면 아래와 같이 표시가 됩니다.

위에 settings 에서 입력했던 값이 그대로 표시가 되고 있지요?

이제 해당 값을 변경한뒤에 저장하는 부분을 만들면 됩니다.

저는 일단 버튼을 누를때 현재 각 메뉴에 설정되어 있는 값을 저장하는 것으로 해보겠습니다.

private void button1_Click(object sender, EventArgs e)
{
    Properties.Settings.Default.myPath = textBox1.Text;
    Properties.Settings.Default.myCheck = checkBox1.Checked;
    Properties.Settings.Default.myNumber =Convert.ToInt32(numericUpDown1.Value);
    Properties.Settings.Default.Save();
}

엄청 간단하죠? 불러올때와 반대로 해당 값을 설정에 입력해준 뒤 마지막 줄에 save 해주면 됩니다.

이 코드를 하나의 함수로 묶어서 핵심 기능을 수행할 때나 Form 을 종료할때 넣어주면 되겠습니다.

반응형

 

 

한번 해볼까요?

 

요렇게 설정을 한 뒤에 버튼을 눌러주고 껐다가 다시 실행해 보면 ?

 

당연한 것이지만 이렇게 다시 그상태 그대로 form 이 실행이 됩니다.

 

어떠신가요? 참 쉽죠?

요런 간단한 기능들이 프로그램의 사용성을 크게 높일 수 있습니다. 본인이 개발하는 유틸리티나 어플리케이션에 이러한 기능이 아직 없다면 어렵지 않고 크게 시간도 들지 않는 기능이므로 꼭 한번 넣어보시기 바랍니다.

그럼 이만~

 

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면  클릭!!  부탁드려요~

2023.01.31 - [DEV/c#] - [c#] Resource 에 추가한 텍스트를 소스코드에서 불러오기

 

[c#] Resource 에 추가한 텍스트를 소스코드에서 불러오기

뻔하디 뻔한 개발 노하누는 가라~ 이번에도 쓸만한 내용을 소개해 드릴 까 합니다. 개발을 하다 보면 실제 소스코드 외에도 어떤 텍스트를 resource 에 넣어 두고 소스코드에서 불러와야 하는 경우

diy-dev-design.tistory.com

2020/08/11 - [DEV/c#] - [c#] streamreader 를 이용하여 정확한 라인 위치 찾기

2020/07/21 - [DEV/c#] - C# 문자열 읽어서 문자열에 해당하는 변수에 값 세팅하기

 

C# 문자열 읽어서 문자열에 해당하는 변수에 값 세팅하기

오늘 소개해드릴 꿀팁은요. 문자열을 읽어 들여서 문자열 내에 들어있는 특정 단어를 이용하여 개발 중인 코드의 변수로 인식하여 해당 변수에 값을 세팅하는 방법을 소개해 드릴까 합니다. 예�

diy-dev-design.tistory.com

2020/06/03 - [DEV/c#] - C# .net으로 photoshop 연동하기

 

C# .net으로 photoshop 연동하기

저는 회사에서 디자인팀에 있고 전공도 디자인과 출신이며 심지어는 고등학교도 예체능계열 고등학교를 나왔습니다만 지금 회사에서 하는일의 95% 정도는 개발을 하고 있습니다. 실제로 제가 ��

diy-dev-design.tistory.com

2020/06/29 - [DIY/Arduino] - C# 에서 아두이노로 시리얼 통신 하기

 

C# 에서 아두이노로 시리얼 통신 하기

카테고리를 c# 으로 해야 할지 Arduino 로 해야할지 조금 고민이 되는 포스트 입니다. 음.... arduino 로 하는게 좋겠네요. 따지고 보면 C# 으로 만든 어플이 중요한게 아니라 아두에노에서 시리얼 통신

diy-dev-design.tistory.com

2020/05/28 - [DEV/c#] - [c#] 주어진 경로가 디렉토리인지 파일인지 확인하는 방법

 

[c#] 주어진 경로가 디렉토리인지 파일인지 확인하는 방법

오늘은 간단하게 주어진 경로가 폴더인지 파일인지 구분하는 방법을 소개해 드리겠습니다. 길게 설명할 것 없이 간단하게 코드나갑니다. FileAttributes chkAtt = File.GetAttributes(_path); if ((chkAtt & FileA..

diy-dev-design.tistory.com

 

반응형

+ Recent posts