# 사용 예시
1. ini 파일
[Params]
weightPath='./weight.pth'
pointA='0.0'
pointB='0.0'
pointC='0.0'
pointD='0.0'
pointE='0.0'
pointF='0.0'
pointG='0.0'
pointH='0.0'
pointI='0.0'
pointJ='0.0'
pointK='0.0'
pointL='0.0'
pointM='0.0'
pointN='0.0'
pointO='0.0'
pointP='0.0'
pointQ='0.0'
2. C# 코드
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
// ini 파일 관련
using System.IO;
using System.Runtime.InteropServices;
namespace GUI_TEST01
{
public partial class Form1 : MetroFramework.Forms.MetroForm //상속 클래스 변경
{
public Form1()
{
InitializeComponent();
// ini 쓰기
// WritePrivateProfileString("WookoaSetting", "TopAlways", "true", "C:\\Setting.ini");
// WritePrivateProfileString("WookoaSetting", "ViewTray", "false", "C:\\Setting.ini");
string iniPath = "C:/Users/Administrator/source/repos/GUI_TEST01/conf/ini.ini";
Load_Threshold(iniPath);
}
// ini 파일 객체
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
// 세팅 초기화
private void metroButton2_Click(object sender, EventArgs e)
{
string iniPath = "C:/Users/Administrator/source/repos/GUI_TEST01/conf/default.ini";
Load_Threshold(iniPath);
Clear_Image();
}
// 세팅 되돌리기
private void metroButton3_Click(object sender, EventArgs e)
{
string iniPath = "C:/Users/Administrator/source/repos/GUI_TEST01/conf/ini.ini";
Load_Threshold(iniPath);
Clear_Image();
}
// 이미지 로드
private void metroButton5_Click(object sender, EventArgs e)
{
Clear_Image();
string img_pathA = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-A.JPG";
string img_pathB = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-B.JPG";
string img_pathC = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-C.JPG";
string img_pathD = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-D.JPG";
string img_pathE = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-E.JPG";
string img_pathF = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-F.JPG";
string img_pathG = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-G.JPG";
string img_pathH = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-H.JPG";
string img_pathI = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-I.JPG";
string img_pathJ = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-J.JPG";
string img_pathK = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-K.JPG";
string img_pathL = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-L.JPG";
string img_pathM = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-M.JPG";
string img_pathN = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-N.JPG";
string img_pathO = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-O.JPG";
string img_pathP = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-P.JPG";
string img_pathQ = "C:/Users/Administrator/source/repos/GUI_TEST01/resources/1번 불량샘플-Q.JPG";
this.pictureBox_1.Load(img_pathA);
this.pictureBox_1.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_2.Load(img_pathB);
this.pictureBox_2.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_3.Load(img_pathC);
this.pictureBox_3.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_4.Load(img_pathD);
this.pictureBox_4.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_5.Load(img_pathE);
this.pictureBox_5.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_6.Load(img_pathF);
this.pictureBox_6.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_7.Load(img_pathG);
this.pictureBox_7.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_8.Load(img_pathH);
this.pictureBox_8.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_9.Load(img_pathI);
this.pictureBox_9.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_10.Load(img_pathJ);
this.pictureBox_10.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_11.Load(img_pathK);
this.pictureBox_11.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_12.Load(img_pathL);
this.pictureBox_12.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_13.Load(img_pathM);
this.pictureBox_13.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_14.Load(img_pathN);
this.pictureBox_14.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_15.Load(img_pathO);
this.pictureBox_15.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_16.Load(img_pathP);
this.pictureBox_16.SizeMode = PictureBoxSizeMode.StretchImage;
this.pictureBox_17.Load(img_pathQ);
this.pictureBox_17.SizeMode = PictureBoxSizeMode.StretchImage;
}
// 세팅 저장하기
private void metroButton4_Click(object sender, EventArgs e)
{
string iniPath = "C:/Users/Administrator/source/repos/GUI_TEST01/conf/ini.ini";
Save_Threshold(iniPath);
}
// 양불 판정
private void metroButton1_Click(object sender, EventArgs e)
{
}
private void Clear_Image()
{
this.pictureBox_1.Image = null;
this.pictureBox_2.Image = null;
this.pictureBox_3.Image = null;
this.pictureBox_4.Image = null;
this.pictureBox_5.Image = null;
this.pictureBox_6.Image = null;
this.pictureBox_7.Image = null;
this.pictureBox_8.Image = null;
this.pictureBox_9.Image = null;
this.pictureBox_10.Image = null;
this.pictureBox_11.Image = null;
this.pictureBox_12.Image = null;
this.pictureBox_13.Image = null;
this.pictureBox_14.Image = null;
this.pictureBox_15.Image = null;
this.pictureBox_16.Image = null;
this.pictureBox_17.Image = null;
}
private void Save_Threshold(string iniPath)
{
// ini 쓰기
WritePrivateProfileString("Params", "pointA", metroTextBox1.Text, iniPath);
WritePrivateProfileString("Params", "pointB", metroTextBox2.Text, iniPath);
WritePrivateProfileString("Params", "pointC", metroTextBox3.Text, iniPath);
WritePrivateProfileString("Params", "pointD", metroTextBox4.Text, iniPath);
WritePrivateProfileString("Params", "pointE", metroTextBox5.Text, iniPath);
WritePrivateProfileString("Params", "pointF", metroTextBox6.Text, iniPath);
WritePrivateProfileString("Params", "pointG", metroTextBox7.Text, iniPath);
WritePrivateProfileString("Params", "pointH", metroTextBox8.Text, iniPath);
WritePrivateProfileString("Params", "pointI", metroTextBox9.Text, iniPath);
WritePrivateProfileString("Params", "pointJ", metroTextBox10.Text, iniPath);
WritePrivateProfileString("Params", "pointK", metroTextBox11.Text, iniPath);
WritePrivateProfileString("Params", "pointL", metroTextBox12.Text, iniPath);
WritePrivateProfileString("Params", "pointM", metroTextBox13.Text, iniPath);
WritePrivateProfileString("Params", "pointN", metroTextBox14.Text, iniPath);
WritePrivateProfileString("Params", "pointO", metroTextBox15.Text, iniPath);
WritePrivateProfileString("Params", "pointP", metroTextBox16.Text, iniPath);
WritePrivateProfileString("Params", "pointQ", metroTextBox17.Text, iniPath);
}
private void Load_Threshold(string iniPath)
{
// ini 파일 읽기
StringBuilder weightPath = new StringBuilder();
StringBuilder pointA = new StringBuilder();
StringBuilder pointB = new StringBuilder();
StringBuilder pointC = new StringBuilder();
StringBuilder pointD = new StringBuilder();
StringBuilder pointE = new StringBuilder();
StringBuilder pointF = new StringBuilder();
StringBuilder pointG = new StringBuilder();
StringBuilder pointH = new StringBuilder();
StringBuilder pointI = new StringBuilder();
StringBuilder pointJ = new StringBuilder();
StringBuilder pointK = new StringBuilder();
StringBuilder pointL = new StringBuilder();
StringBuilder pointM = new StringBuilder();
StringBuilder pointN = new StringBuilder();
StringBuilder pointO = new StringBuilder();
StringBuilder pointP = new StringBuilder();
StringBuilder pointQ = new StringBuilder();
GetPrivateProfileString("Params", "weightPath", "", weightPath, weightPath.Capacity, iniPath);
GetPrivateProfileString("Params", "pointA", "", pointA, pointA.Capacity, iniPath);
GetPrivateProfileString("Params", "pointB", "", pointB, pointB.Capacity, iniPath);
GetPrivateProfileString("Params", "pointC", "", pointC, pointC.Capacity, iniPath);
GetPrivateProfileString("Params", "pointD", "", pointD, pointD.Capacity, iniPath);
GetPrivateProfileString("Params", "pointE", "", pointE, pointE.Capacity, iniPath);
GetPrivateProfileString("Params", "pointF", "", pointF, pointF.Capacity, iniPath);
GetPrivateProfileString("Params", "pointG", "", pointG, pointG.Capacity, iniPath);
GetPrivateProfileString("Params", "pointH", "", pointH, pointH.Capacity, iniPath);
GetPrivateProfileString("Params", "pointI", "", pointI, pointI.Capacity, iniPath);
GetPrivateProfileString("Params", "pointJ", "", pointJ, pointJ.Capacity, iniPath);
GetPrivateProfileString("Params", "pointK", "", pointK, pointK.Capacity, iniPath);
GetPrivateProfileString("Params", "pointL", "", pointL, pointL.Capacity, iniPath);
GetPrivateProfileString("Params", "pointM", "", pointM, pointM.Capacity, iniPath);
GetPrivateProfileString("Params", "pointN", "", pointN, pointN.Capacity, iniPath);
GetPrivateProfileString("Params", "pointO", "", pointO, pointO.Capacity, iniPath);
GetPrivateProfileString("Params", "pointP", "", pointP, pointP.Capacity, iniPath);
GetPrivateProfileString("Params", "pointQ", "", pointQ, pointQ.Capacity, iniPath);
// ini 파일로 폼세팅
this.metroTrackBar1.Value = (int)(float.Parse(pointA.ToString()) * 100);
this.metroTextBox1.Text = (((float)this.metroTrackBar1.Value) / 100).ToString();
this.metroTrackBar2.Value = (int)(float.Parse(pointB.ToString()) * 100);
this.metroTextBox2.Text = (((float)this.metroTrackBar2.Value) / 100).ToString();
this.metroTrackBar3.Value = (int)(float.Parse(pointC.ToString()) * 100);
this.metroTextBox3.Text = (((float)this.metroTrackBar3.Value) / 100).ToString();
this.metroTrackBar4.Value = (int)(float.Parse(pointD.ToString()) * 100);
this.metroTextBox4.Text = (((float)this.metroTrackBar4.Value) / 100).ToString();
this.metroTrackBar5.Value = (int)(float.Parse(pointE.ToString()) * 100);
this.metroTextBox5.Text = (((float)this.metroTrackBar5.Value) / 100).ToString();
this.metroTrackBar6.Value = (int)(float.Parse(pointF.ToString()) * 100);
this.metroTextBox6.Text = (((float)this.metroTrackBar6.Value) / 100).ToString();
this.metroTrackBar7.Value = (int)(float.Parse(pointG.ToString()) * 100);
this.metroTextBox7.Text = (((float)this.metroTrackBar7.Value) / 100).ToString();
this.metroTrackBar8.Value = (int)(float.Parse(pointH.ToString()) * 100);
this.metroTextBox8.Text = (((float)this.metroTrackBar8.Value) / 100).ToString();
this.metroTrackBar9.Value = (int)(float.Parse(pointI.ToString()) * 100);
this.metroTextBox9.Text = (((float)this.metroTrackBar9.Value) / 100).ToString();
this.metroTrackBar10.Value = (int)(float.Parse(pointJ.ToString()) * 100);
this.metroTextBox10.Text = (((float)this.metroTrackBar10.Value) / 100).ToString();
this.metroTrackBar11.Value = (int)(float.Parse(pointK.ToString()) * 100);
this.metroTextBox11.Text = (((float)this.metroTrackBar11.Value) / 100).ToString();
this.metroTrackBar12.Value = (int)(float.Parse(pointL.ToString()) * 100);
this.metroTextBox12.Text = (((float)this.metroTrackBar12.Value) / 100).ToString();
this.metroTrackBar13.Value = (int)(float.Parse(pointM.ToString()) * 100);
this.metroTextBox13.Text = (((float)this.metroTrackBar13.Value) / 100).ToString();
this.metroTrackBar14.Value = (int)(float.Parse(pointN.ToString()) * 100);
this.metroTextBox14.Text = (((float)this.metroTrackBar14.Value) / 100).ToString();
this.metroTrackBar15.Value = (int)(float.Parse(pointO.ToString()) * 100);
this.metroTextBox15.Text = (((float)this.metroTrackBar15.Value) / 100).ToString();
this.metroTrackBar16.Value = (int)(float.Parse(pointP.ToString()) * 100);
this.metroTextBox16.Text = (((float)this.metroTrackBar16.Value) / 100).ToString();
this.metroTrackBar17.Value = (int)(float.Parse(pointQ.ToString()) * 100);
this.metroTextBox17.Text = (((float)this.metroTrackBar17.Value) / 100).ToString();
}
private void Form1_Load(object sender, EventArgs e)
{
//Console.WriteLine(this.metroComboBox1.Items[0]);
//this.metroComboBox1.Text = this.metroComboBox1.Items[0].ToString();
this.MinimumSize = new Size(1396, 820);
this.MaximumSize = new Size(1396, 820);
}
private void htmlLabel1_Click(object sender, EventArgs e)
{
}
private void metroTextBox1_Click(object sender, EventArgs e)
{
}
private void metroTextBox1_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar1.Value = (int)(float.Parse(this.metroTextBox1.Text) * 100);
}
catch {
this.metroTextBox1.Text = (((float)this.metroTrackBar1.Value) / 100).ToString();
}
}
private void metroTextBox2_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar2.Value = (int)(float.Parse(this.metroTextBox2.Text) * 100);
}
catch
{
this.metroTextBox2.Text = (((float)this.metroTrackBar2.Value) / 100).ToString();
}
}
private void metroTextBox3_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar3.Value = (int)(float.Parse(this.metroTextBox3.Text) * 100);
}
catch
{
this.metroTextBox3.Text = (((float)this.metroTrackBar3.Value) / 100).ToString();
}
}
private void metroTextBox4_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar4.Value = (int)(float.Parse(this.metroTextBox4.Text) * 100);
}
catch
{
this.metroTextBox4.Text = (((float)this.metroTrackBar4.Value) / 100).ToString();
}
}
private void metroTextBox5_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar5.Value = (int)(float.Parse(this.metroTextBox5.Text) * 100);
}
catch
{
this.metroTextBox5.Text = (((float)this.metroTrackBar5.Value) / 100).ToString();
}
}
private void metroTextBox6_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar6.Value = (int)(float.Parse(this.metroTextBox6.Text) * 100);
}
catch
{
this.metroTextBox6.Text = (((float)this.metroTrackBar6.Value) / 100).ToString();
}
}
private void metroTextBox7_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar7.Value = (int)(float.Parse(this.metroTextBox7.Text) * 100);
}
catch
{
this.metroTextBox7.Text = (((float)this.metroTrackBar7.Value) / 100).ToString();
}
}
private void metroTextBox8_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar8.Value = (int)(float.Parse(this.metroTextBox8.Text) * 100);
}
catch
{
this.metroTextBox8.Text = (((float)this.metroTrackBar8.Value) / 100).ToString();
}
}
private void metroTextBox9_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar9.Value = (int)(float.Parse(this.metroTextBox9.Text) * 100);
}
catch
{
this.metroTextBox9.Text = (((float)this.metroTrackBar9.Value) / 100).ToString();
}
}
private void metroTextBox10_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar10.Value = (int)(float.Parse(this.metroTextBox10.Text) * 100);
}
catch
{
this.metroTextBox10.Text = (((float)this.metroTrackBar10.Value) / 100).ToString();
}
}
private void metroTextBox11_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar11.Value = (int)(float.Parse(this.metroTextBox11.Text) * 100);
}
catch
{
this.metroTextBox11.Text = (((float)this.metroTrackBar11.Value) / 100).ToString();
}
}
private void metroTextBox12_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar12.Value = (int)(float.Parse(this.metroTextBox12.Text) * 100);
}
catch
{
this.metroTextBox12.Text = (((float)this.metroTrackBar12.Value) / 100).ToString();
}
}
private void metroTextBox13_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar13.Value = (int)(float.Parse(this.metroTextBox13.Text) * 100);
}
catch
{
this.metroTextBox13.Text = (((float)this.metroTrackBar13.Value) / 100).ToString();
}
}
private void metroTextBox14_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar14.Value = (int)(float.Parse(this.metroTextBox14.Text) * 100);
}
catch
{
this.metroTextBox14.Text = (((float)this.metroTrackBar14.Value) / 100).ToString();
}
}
private void metroTextBox15_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar15.Value = (int)(float.Parse(this.metroTextBox15.Text) * 100);
}
catch
{
this.metroTextBox15.Text = (((float)this.metroTrackBar15.Value) / 100).ToString();
}
}
private void metroTextBox16_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar16.Value = (int)(float.Parse(this.metroTextBox16.Text) * 100);
}
catch
{
this.metroTextBox16.Text = (((float)this.metroTrackBar16.Value) / 100).ToString();
}
}
private void metroTextBox17_TextChanged(object sender, EventArgs e)
{
try
{
this.metroTrackBar17.Value = (int)(float.Parse(this.metroTextBox17.Text) * 100);
}
catch
{
this.metroTextBox17.Text = (((float)this.metroTrackBar17.Value) / 100).ToString();
}
}
private void metroTrackBar1_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox1.Text = (((float)this.metroTrackBar1.Value) / 100).ToString();
}
private void metroTrackBar2_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox2.Text = (((float)this.metroTrackBar2.Value) / 100).ToString();
}
private void metroTrackBar3_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox3.Text = (((float)this.metroTrackBar3.Value) / 100).ToString();
}
private void metroTrackBar4_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox4.Text = (((float)this.metroTrackBar4.Value) / 100).ToString();
}
private void metroTrackBar5_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox5.Text = (((float)this.metroTrackBar5.Value) / 100).ToString();
}
private void metroTrackBar6_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox6.Text = (((float)this.metroTrackBar6.Value) / 100).ToString();
}
private void metroTrackBar7_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox7.Text = (((float)this.metroTrackBar7.Value) / 100).ToString();
}
private void metroTrackBar8_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox8.Text = (((float)this.metroTrackBar8.Value) / 100).ToString();
}
private void metroTrackBar9_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox9.Text = (((float)this.metroTrackBar9.Value) / 100).ToString();
}
private void metroTrackBar10_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox10.Text = (((float)this.metroTrackBar10.Value) / 100).ToString();
}
private void metroTrackBar11_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox11.Text = (((float)this.metroTrackBar11.Value) / 100).ToString();
}
private void metroTrackBar12_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox12.Text = (((float)this.metroTrackBar12.Value) / 100).ToString();
}
private void metroTrackBar13_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox13.Text = (((float)this.metroTrackBar13.Value) / 100).ToString();
}
private void metroTrackBar14_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox14.Text = (((float)this.metroTrackBar14.Value) / 100).ToString();
}
private void metroTrackBar15_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox15.Text = (((float)this.metroTrackBar15.Value) / 100).ToString();
}
private void metroTrackBar16_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox16.Text = (((float)this.metroTrackBar16.Value) / 100).ToString();
}
private void metroTrackBar17_ValueChanged(object sender, EventArgs e)
{
this.metroTextBox17.Text = (((float)this.metroTrackBar17.Value) / 100).ToString();
}
private void metroTextBox2_Click(object sender, EventArgs e)
{
}
private void metroTextBox3_Click(object sender, EventArgs e)
{
}
private void metroTextBox4_Click(object sender, EventArgs e)
{
}
private void metroTextBox5_Click(object sender, EventArgs e)
{
}
private void metroTextBox8_Click(object sender, EventArgs e)
{
}
private void metroTextBox9_Click(object sender, EventArgs e)
{
}
private void metroTextBox10_Click(object sender, EventArgs e)
{
}
private void metroTextBox12_Click(object sender, EventArgs e)
{
}
private void metroTextBox14_Click(object sender, EventArgs e)
{
}
private void metroTextBox15_Click(object sender, EventArgs e)
{
}
private void metroTextBox16_Click(object sender, EventArgs e)
{
}
private void metroTextBox17_Click(object sender, EventArgs e)
{
}
}
}
https://wookoa.tistory.com/417
C# / ini 파일 읽기 및 쓰기: kernel32 사용하지 않고
프로그램을 개발하다 보면 사용자 환경을 저장하는 설정 파일을 읽거나 쓰는 경우가 발생한다. 그중 많이 사용되는 방법 중 하나가 .ini 파일을 사용하는 방법이며, .ini 파일은 일정한 문법적인
wookoa.tistory.com
'프로그래밍 언어 > C#' 카테고리의 다른 글
[C#] Winform 모든 포커스 해제 (0) | 2022.09.05 |
---|---|
[C#] 웹페이지 값 가져오기 (0) | 2022.09.05 |
[C#] Yes No 버튼 | 확인 버튼 (0) | 2022.08.29 |
[C#] 명령 프롬프트 실행 (0) | 2022.08.26 |
[C#] C#에서 Python 실행하기 (0) | 2022.08.26 |
[C#] GUI 연습 | MetroFramework 적용 (0) | 2022.08.19 |
[C#] C# 연습 (0) | 2022.06.21 |