국 끓일 때 다싯물 먼저 내는 밑작업 마냥, 코딩에서 프로토 타입으로 만들어지는 프로그램은 텍스트 파일(혹은 엑셀, MP3, 동영상 등)을 읽는 기능 부터 구현하게 되는 경우가 왕왕 생기지요. 오늘 포스팅에서는 [텍스트 파일을 드래그로 폼에 넣어, 내용을 콘솔에 출력하는 프로그램]을 만들어 보려고 합니다
(음악 파일을 읽어 재생하는 기능 응용 예 : http://topnanis.tistory.com/167 )
1. 솔루션탐색기 -> 응용프로그램 속성은 "콘솔 응용프로그램" 으로 바꾸어 Console.write("Hello, world");를 콘솔화면에서 확인 할 수 있도록 해주세요
2. 폼 속성 -> 이벤트추가 -> DragEnter와 DragDrop 두개 항목을 자동 추가 해서 코드를 넣어 주세요
3. 폼 속성 -> Allow Drop 는 True 로 변경
메소드는 마우스 드래그를 시작할 때(DragEnter), 드래그를 놓을 때(DragDrop), 처리(Parser) 세개 만으로 구성됩니다.
using System;
using System.Windows.Forms;
using System.IO;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
string[] file = (string[])e.Data.GetData(DataFormats.FileDrop);
foreach (string str in file)
{
Console.WriteLine(str);
Thread thread = new Thread(() => Parser(str));
thread.Start();
}
}
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Copy | DragDropEffects.Scroll;
}
}
public void Parser(string path)
{
string strSaveFilePath = path;
StreamReader SRead = new StreamReader(strSaveFilePath, System.Text.Encoding.Default /* .UTF8*/);
string strFileLine = string.Empty;
int page = 0;
while ((strFileLine = SRead.ReadLine()) != null)
{
Console.WriteLine(strFileLine);
//20줄씩 끊어서 보여줌
if (page > 20)
{
Console.ReadLine();
page = 0;
}
else page++;
}
}
}
}
'2_ 바삭바삭 프로그래밍 > C# and Visual C++' 카테고리의 다른 글
[C#] Alt+F4로 폼 닫는 것 막기 (0) | 2013.02.27 |
---|---|
[C#] textbox 에서 ctrl + a 했을때 전체선택 (0) | 2013.02.27 |
[C#] 윈폼기반 프로그래밍을 할때 Invoke() 이쁘게쓰기! (0) | 2013.02.08 |
[C#] 윈폼에서 단축키 설정.. (0) | 2013.02.01 |
[C#] 폼 드래그 할때 이동 (0) | 2012.10.05 |