이번 포스팅은 PropertyGrid를 이용하여 Config 데이터들을 관리하고
내용을 INI 파일로 저장 및 읽기를 만든 것을 정리하였습니다.
PropertyGrid란?
- PropertyGrid는 지정해준 속성 값들을 보여주고 변경할 수 있게 하는 기능으로 설정 값들을 지정할 때 많이 사용합니다. PropertyGrid의 설정 값들을 INI로 저장하거나 INI에 있는 설정 값들을 PropertyGrid에 띄워보게 하려고 합니다.
PropertyGrid 개념
- 먼저 PropertyGrid의 데이터들을 만들고 확인해보고 INI파일로 저장하려고 했습니다.
코드 1) 카테고리와 속성 만들기
[DefaultPropertyAttribute("Name")]
public class ConfigParam
{
/*
* _addr, _PortNum이라는 변수들은 Property에 하나하나에 매칭
* 그러나 private이므로 PropertyGrid는 변수들을 읽을수도 변경할 수도 없다.
* 그래서 Property 지시자로 PropertyGrid와 연결하고 Property를 만든다.
*/
private string _Addr;
private int _PortNum;
public ConfigParam() { }
/*
* private으로 선언한 변수들을 Property화 시켜 외부와의 통신을 위한 public 처리를 했다.
* 각각의 Category별로 분류를 해야하기 위해 Attribute 기법을 쓴다.
* Attribute 기법
* '[ ]'를 통해 지정되며 클래스나 property 등에 특정한 특성을 지정하도록 하는 것
* Category 별로 Property를 분류하기 위한 Attribute의 지시자는 CategoryAttribute 이다.
*/
[CategoryAttribute("Test Settings"),
DescriptionAttribute("Setting for Test")]
public string Addr
{
get { return _Addr; }
set { _Addr = value; }
}
[CategoryAttribute("Test Settings"),
DescriptionAttribute("Setting for Test")]
public int PortNum
{
get { return _PortNum; }
set { _PortNum = value; }
}
}
코드 2) PropertyGrid에 default 값 넣기
public void DefaultConfig()
{
ConfigParam configSave = new ConfigParam();
configSave.Addr = "192.168.0.1";
configSave.PortNum = 5000;
pGrid_Save.SelectedObject = configSave;
}
결과)
- 속성을 만들고 default 값을 넣어 확인했습니다.
- 이제 이 값들을 가지고 INI 파일을 만드는 과정을 알아보겠습니다.
INI 파일이란?
- 프로그램을 만들다 보면 환경을 저장하는 설정 파일을 읽거나 쓰는 경우가 발생합니다.
사용되는 많은 방법 중 하나는 .ini 파일을 이용하는 방법이며 저는 kernel32를 사용하여 만들었습니다.
INI 파일 저장 코드
1) INI 파일 입출력 메소드를 가져온다.
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key,
string value, string filepath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def,
StringBuilder retVal, int size, string filepath);
- DllImport를 사용하여 kernel32에 있는 ini파일 입출력 메소드를 가져옵니다.
2) Save와 Load 버튼을 구현하고 클릭 이벤트를 위한 코드를 작성합니다.
- inipath는 따로 설정해주셔야 합니다! 저는 D:\\Config.ini로 설정했습니다.
private void Btn_Save_Click(object sender, EventArgs e)
{
SaveINI_File();
}
private void SaveINI_File()
{
object obj = pGrid_Save.SelectedObject;
ConfigParam Config_save = (ConfigParam)obj;
iniFile.SaveINIFile(Config_save);
}
public void SaveINIFile(ConfigParam configdata)
{
WritePrivateProfileString("Test", "Test1", Convert.ToString(configdata.Addr), this.inipath);
WritePrivateProfileString("Test", "Test2", Convert.ToString(configdata.Addr), this.inipath);
}
결과)
- PropertyGrid에서 속성 값들을 바꾸고 Save 버튼을 누르니 설정해두었던 inipath에 Config.ini 파일로 속성 값들이 저장된 것을 확인할 수 있었습니다.
이렇게 C#으로 INI 파일을 저장하는 방법을 알아보았습니다
틀린 점이나 질문이 있으시면 댓글로 남겨주세요!
'C# > Winform' 카테고리의 다른 글
C# Winform DataGridView Header Cell 높이 변경 (0) | 2023.12.20 |
---|---|
C# Winform DataGridView Column 높이 변경 (0) | 2023.12.19 |
C# Winform DataGridView 이해 (0) | 2023.12.19 |
C# Winform 이미지 히스토그램 구현 (2) | 2023.11.29 |
[C# Winform] Form에 Form 붙이기 (0) | 2021.12.07 |