윈폼을 사용하여 간단한 입력 및 텍스트 파일에 저장하는 기본적인 프로그램을 만들어 보겠습니다.
윈폼 프로그래밍을 할 때 제공되는 여러 컨트롤들을 적절하게 사용할 수 있어야 합니다.
윈폼에서 제공하는 기본 컨트롤들 외에 다양한 외부 컨트롤들이 많이 나와 있지만, 표준 컨트롤들 제대로 익히는 게 중요합니다.
간단한 입력화면으로부터 데이터를 가져와서 지정된 위치의 텍스트파일에 한 줄씩 저장하는 프로그램을 작성하도록 하겠습니다. 이전 포스팅에서 소개한 텍스트파일에 적합한 StreamWriter / StreamReader를 이용하겠습니다.
Label, ComboBox, TextBox, DateTimePicker,Button 을 이용해서 간단하게 화면을 디자인합니다.
결과는 지정된 위치에 한줄씩 콤마로 구분하여 저장합니다.
Visual Studio 2022 를 실행해서 새 프로젝트 만들기를 클릭합니다.
Windows Forms 앱(.Net Framework)을 클릭합니다.
원하는 모양을 컨트롤들을 배치하고, 각 컨트롤의 속성창에 Name과 Text, Item 들을 입력합니다.
변수들 이름짓는게 가장 힘든 일이지요 ㅎㅎ 위 표는 간단한 C# 컨트롤 이름명명법입니다.
파일 쓰기
public partial class Contact : Form
{
public Contact()
{
InitializeComponent();
}
//저장버튼
private void btnSave_Click(object sender, EventArgs e)
{
try
{
string sort = GetSelectedSort();
//combo박스가 선택되지 않으면 메시지 출력
if (string.IsNullOrEmpty(sort))
{
MessageBox.Show("목록을 구분해 주세요.");
return;
}
// 각 데이터값을 문자열에 저장
string name = txtName.Text;
string birth = dtBirth.Value.ToShortDateString();
string phoneNumber = GetPhoneNumber();
//combo박스가 선택되지 않으면 메시지 출력
if (string.IsNullOrEmpty(phoneNumber))
{
MessageBox.Show("올바른 휴대폰 번호를 입력하세요");
return;
}
string address = txtAddress.Text;
// 각 필드를 콤마로 구분
string data = $"{sort},{name},{birth},{phoneNumber},{address}";
// StreamWriter를 이용해서 지정영역의 텍스트파일에 한줄씩 추가
using (StreamWriter sw = new StreamWriter(@"D:\contact.txt", true))
{
sw.WriteLine(data);
}
clearForm();
}
catch (Exception ex)
{
MessageBox.Show($"데이터 저장 중 오류가 발생했습니다.({ex.Message})");
}
}
//지우기버튼
private void btnClear_Click(object sender, EventArgs e)
{
clearForm();
}
//종료버튼
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private string GetSelectedSort()
{
if (cboSort.SelectedIndex >= 0)
{
return cboSort.Items[cboSort.SelectedIndex].ToString();
}
return null;
}
private string GetPhoneNumber()
{
if (cboPhone.SelectedIndex >= 0)
{
string phone1 = cboPhone.Items[cboPhone.SelectedIndex].ToString();
string phone2 = txtPhone.Text;
return phone1 + "-" + phone2;
}
return null;
}
private void clearForm()
{
cboSort.SelectedIndex = -1;
txtName.Text = string.Empty;
dtBirth.Value = DateTime.Now;
cboPhone.SelectedIndex = -1;
txtPhone.Text = string.Empty;
txtAddress.Text = string.Empty;
}
}
DataGridView와 버튼을 추가하여 읽기 폼을 디자인합니다.
파일 읽기
public partial class ReadData : Form
{
public ReadData()
{
InitializeComponent();
}
// DataGridView에 컬럼명을 지정
private void ReadData_Load(object sender, EventArgs e)
{
dataGridView1.Columns.Add("Solt", "구분");
dataGridView1.Columns.Add("Name","성명");
dataGridView1.Columns.Add("Birth", "생년월일");
dataGridView1.Columns.Add("Phone", "연락처");
dataGridView1.Columns.Add("Addr", "주소");
}
//파일읽기버튼을 클릭했을 때 줄단위로 파일을 읽어서 표시
private void btnRead_Click(object sender, EventArgs e)
{
try
{
using (StreamReader sr = new StreamReader(@"D:\contact.txt"))
{
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
string[] datas = line.Split(',');
dataGridView1.Rows.Add(datas[0], datas[1], datas[2], datas[3], datas[4]);
}
}
}
catch(Exception ex)
{
MessageBox.Show($"파일읽기오류.({ex.Message})");
}
}
//종료버튼
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
이런 간단한 프로그램들을 직접 연습해 가면서 기능을 하나씩 추가해 보는 것도 실력향상에 도움이 됩니다.
'Programming' 카테고리의 다른 글
파이썬(Python) 기초 : 데이터 타입과 변수 (0) | 2024.04.05 |
---|---|
파이썬(Python) 기초 : 아나콘다, 주피터랩으로 파이썬 시작하기 (0) | 2024.04.05 |
파일 입출력 : 쉽고 재미있는 C# Programming 의 기본 (2) | 2024.03.05 |
예외처리 및 프로그램 디버깅 : 쉽고 재미있는 C# Programming 의 기본 (0) | 2024.01.30 |
자료구조 : 쉽고 재미있는 C# Programming 의 기본 (0) | 2024.01.24 |