using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
namespace vacaPractice
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//전체 초기화
Init();
FormClosing += new FormClosingEventHandler(closing);
}
private void closing(object sender, FormClosingEventArgs e)
{
try
{
wb.Close(true);
excelApp.Quit();
}
catch
{
//Application.Exit();
}
Application.Exit();
}
//excel file path
string strPath = "";
//current rowNum
//2 ~ last row
int intRow = 2;
int intLastRow = 0;
//today word
float fltIndex = 0;
float fltOk = -1;
float fltNo = -1;
static Excel.Application excelApp = null;
static Excel.Workbook wb = null;
static Excel.Worksheet ws = null;
static object[,] data;
//전테 초기화 메서드
void Init()
{
//레이블 초기화
this.label1.Text = "漢字";
this.label2.Text = "뜻";
this.label3.Text = "발음";
this.label4.Text = "종류";
this.label5.Text = "레벨";
this.label6.Text = "순번";
//path name
//strPath = @"D:\공부\voca\nadel\data.xlsx";
this.label2.ForeColor = Color.White;
this.label3.ForeColor = Color.White;
this.label1.AutoSize = false;
this.label2.AutoSize = false;
this.label3.AutoSize = false;
this.label1.Width = 300;
this.label2.Width = 300;
this.label3.Width = 300;
}
//load excel
void loadExcel()
{
try
{
excelApp = new Excel.Application();
wb = excelApp.Workbooks.Open(strPath);
ws = wb.Worksheets.get_Item(1) as Excel.Worksheet;
Excel.Range rng = ws.UsedRange;
Excel.Range last = ws.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing);
data = rng.Value;
intLastRow = last.Row;
}
catch (Exception ex)
{
throw ex;
}
}
//data read
void reExcal()
{
this.label2.ForeColor = Color.White;
this.label3.ForeColor = Color.White;
//random rowNumber
rodmRow();
try
{
for (int c = 1; c <= 7; c++)
{
if (data[intRow, c] == null)
{
label1.Text = data[intRow, 3] == null ? "" : data[intRow, 3].ToString();
label2.Text = data[intRow, 4] == null ? "" : data[intRow, 4].ToString();
label3.Text = data[intRow, 5] == null ? "" : data[intRow, 5].ToString();
label4.Text = data[intRow, 6] == null ? "" : data[intRow, 6].ToString();
label5.Text = data[intRow, 1] == null ? "" : data[intRow, 1].ToString();
label6.Text = data[intRow, 2] == null ? "" : data[intRow, 2].ToString();
this.textBox1.Text = data[intRow, 3] == null ? "" : data[intRow, 3].ToString();
continue;
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
//ReleaseExcelObject(ws);
//ReleaseExcelObject(wb);
//ReleaseExcelObject(excelApp);
fltIndex++;
intRow++;
this.label7.Text = fltIndex.ToString();
}
}
//뜻보기
private void button1_Click(object sender, EventArgs e)
{
bt1();
}
void bt1()
{
this.label2.ForeColor = Color.Black;
this.label3.ForeColor = Color.Black;
}
//안다 버튼
private void button2_Click(object sender, EventArgs e)
{
bt2();
}
void bt2()
{
reExcal();
if (fltOk.Equals(-1))
{
fltNo++;
fltOk++;
}
else
{
fltOk++;
claResult();
}
}
//모른다 버튼
private void button3_Click(object sender, EventArgs e)
{
bt3();
}
void bt3()
{
reExcal();
if (fltNo.Equals(-1))
{
fltOk++;
fltNo++;
}
else
{
fltNo++;
claResult();
}
}
//성적 결과 내기
void claResult()
{
float floatResult = fltOk / (fltIndex -1) * 100;
this.label9.Text = floatResult.ToString("N1");
this.label11.Text = fltOk.ToString();
this.label13.Text = fltNo.ToString();
}
//행번호 랜덤으로 만들기
void rodmRow()
{
Random r = new Random();
intRow = r.Next(2, intLastRow);
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode.ToString() == "Left")
{
bt2();
}
if (e.KeyCode.ToString() == "Right")
{
bt3();
}
if (e.KeyCode.ToString() == "Down")
{
bt1();
}
}
//파일찾기 버튼
private void button4_Click(object sender, EventArgs e)
{
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Excel File(*.xlsx)|*.*";
open.Title = "단어집 파일을 선택해 주세요.";
if (open.ShowDialog() == DialogResult.OK)
{
strPath = open.FileName;
//load excel
loadExcel();
}
//성공시 버튼 지우기
this.button4.Visible = false;
}
}//form