반응형
1. 강의 개요
이번 강의에서는 DataGridView를 활용하여 간단한 스프레드시트를 제작합니다.
스프레드시트는 데이터를 입력하고, 계산 및 합계를 보여주는 데 유용한 도구입니다.
이 강의에서는 DataGridView를 사용하여 데이터 입력, 계산 기능,
그리고 합계를 표시하는 방법을 학습합니다.
2. 학습 목표
- DataGridView를 활용한 데이터 입력 및 관리
- 열별 합계를 계산하고 표시하는 기능 구현
- 동적으로 데이터를 수정하면 실시간으로 계산 결과 갱신
- 사용자 친화적인 스프레드시트 UI 구성
3. 기능 요구사항
필수 기능
1️⃣ 데이터 입력:
- DataGridView를 통해 데이터를 입력
2️⃣ 자동 합계 계산:
- 특정 열의 값을 합산하여 결과 표시
3️⃣ 실시간 업데이트:
- 데이터 수정 시 자동으로 합계 갱신
4️⃣ 합계 표시:
- DataGridView 하단에 합계를 표시
4. 실습: 스프레드시트 애플리케이션 제작
1️⃣ 폼 구성
- 폼(Form) 이름: Form1
- 컨트롤 배치:
컨트롤 타입 이름 위치 크기
DataGridView | dgvData | 폼 상단 전체 | (600 x 300) |
Label | lblSum | 폼 하단 왼쪽 | (200 x 30) |
Button | btnCalculate | 폼 하단 오른쪽 | (100 x 30) |
📌 폼 디자인 예시:
--------------------------------------------------
| [DataGridView - 데이터 입력] |
--------------------------------------------------
| [합계 표시 Label] [Calculate 버튼] |
--------------------------------------------------
2️⃣ 코드 작성
(1) DataGridView 초기화
using System;
using System.Windows.Forms;
namespace WindowsFormsApp_Spreadsheet
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
InitializeDataGridView();
}
// DataGridView 초기화
private void InitializeDataGridView()
{
dgvData.ColumnCount = 3; // 3개의 열 생성
dgvData.Columns[0].Name = "항목";
dgvData.Columns[1].Name = "수량";
dgvData.Columns[2].Name = "가격";
dgvData.AllowUserToAddRows = true; // 사용자가 행 추가 가능
dgvData.CellValueChanged += DgvData_CellValueChanged;
}
// 셀 값 변경 시 합계 업데이트
private void DgvData_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
CalculateSum();
}
}
}
(2) 합계 계산 기능
// 합계 계산
private void CalculateSum()
{
decimal sum = 0;
foreach (DataGridViewRow row in dgvData.Rows)
{
if (row.IsNewRow) continue; // 새 행 무시
if (decimal.TryParse(row.Cells[1].Value?.ToString(), out decimal quantity) &&
decimal.TryParse(row.Cells[2].Value?.ToString(), out decimal price))
{
sum += quantity * price;
}
}
lblSum.Text = $"총 합계: {sum:C}"; // 통화 형식으로 표시
}
// 수동으로 계산 버튼 클릭 시 실행
private void btnCalculate_Click(object sender, EventArgs e)
{
CalculateSum();
}
(3) Designer 코드
private void InitializeComponent()
{
this.dgvData = new DataGridView();
this.lblSum = new Label();
this.btnCalculate = new Button();
// DataGridView 설정
this.dgvData.Location = new System.Drawing.Point(10, 10);
this.dgvData.Size = new System.Drawing.Size(600, 300);
// 합계 Label 설정
this.lblSum.Location = new System.Drawing.Point(10, 320);
this.lblSum.Size = new System.Drawing.Size(200, 30);
this.lblSum.Text = "총 합계: 0";
// Calculate Button 설정
this.btnCalculate.Location = new System.Drawing.Point(520, 320);
this.btnCalculate.Size = new System.Drawing.Size(100, 30);
this.btnCalculate.Text = "Calculate";
this.btnCalculate.Click += new EventHandler(this.btnCalculate_Click);
// Form 설정
this.ClientSize = new System.Drawing.Size(640, 360);
this.Controls.Add(this.dgvData);
this.Controls.Add(this.lblSum);
this.Controls.Add(this.btnCalculate);
this.Text = "스프레드시트 애플리케이션";
}
3️⃣ 실행 결과
1️⃣ 데이터 입력
- DataGridView에 항목, 수량, 가격 입력
2️⃣ 자동 합계 계산
- 데이터를 입력하거나 수정할 때 합계가 자동 업데이트
3️⃣ 합계 수동 계산
- "Calculate" 버튼 클릭 시 현재 입력된 데이터를 기반으로 합계 계산
5. 주요 개념 요약
- DataGridView: 데이터를 시각적으로 입력 및 관리
- CellValueChanged 이벤트: 데이터가 변경될 때 실행되는 이벤트
- decimal.TryParse: 문자열을 숫자로 안전하게 변환
- Label: 계산 결과를 사용자에게 표시
📌 #CSharp #WindowsForms #DataGridView #스프레드시트 #자동합계 #데이터입력
반응형
'📁 [4] 개발자 정보 & 코드 노트 > C#' 카테고리의 다른 글
C# Windows Forms 강의 101편: 애니메이션 효과와 트랜지션 구현 (0) | 2025.05.15 |
---|---|
C# Windows Forms 강의 100편: 사용자 설정 저장 애플리케이션 제작 - Settings 저장 및 불러오기 (0) | 2025.05.14 |
C# Windows Forms 강의 98편: 멀티페이지 탭 애플리케이션 제작 - TabControl 활용 (0) | 2025.05.12 |
C# Windows Forms 강의 97편: REST API와 연동하여 실시간 데이터 가져오기 (0) | 2025.05.11 |
C# Windows Forms 강의 96편: JSON 데이터 처리 애플리케이션 제작 - JSON 읽기 및 쓰기 (0) | 2025.05.10 |