티스토리 뷰
목차
반응형
C# 메모장 프로그램 (윈도우 notepad 소스 코드)
C# 메모장
소스 코드 - memo.zip
[C# 메모장 프로그램 (윈도우 notepad 소스 코드)]
기능별 구현은 아래 소스 보면서 참조하세요.
1. using
1 2 3 4 5 6 7 8 9 10 11 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Drawing.Printing; using System.Collections; using Microsoft.Win32; | cs |
2. 변수
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // 폼 파일 객체 Go GoForm; Find FindForm; Change ChangeForm; // 전역 변수 public TextBox tb; public int txtLine = 1; public int moveLine = 0; public char[] txt = null; public int cLength = 0; public string search = null; private Font printFont; private string streamToPrint = null; private bool SaveCheck = false; private bool EditText = false; | cs |
3. FormClosing 이벤트
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { if (EditText == false) { e.Cancel = true; return; } else if (EditText == true) { } if (EditText == false) { if (MessageBox.Show("저장", "나가기", MessageBoxButtons.YesNoCancel) == DialogResult.Yes) { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { SaveYorN(); } else if (saveFileDialog1.ShowDialog() == DialogResult.No) { this.Close(); } } } } | cs |
4. TextChanged 이벤트
1 2 3 4 5 | // TextBox 메인 텍스트 박스 RichTextBox public void TextBox_TextChanged_1(object sender, EventArgs e) { EditText = true; } | cs |
[C# 메모장 프로그램 (윈도우 notepad 소스 코드)]
5. File 이벤트, 열기, 저장, 다른 이름으로 저장, 페이지 설정, 인쇄, 끝내기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | private void menu_NewFile_Click(object sender, EventArgs e) { try { if (TextBox.Text != "") { if (MessageBox.Show(this, "작업중인 문서 저장?", "저장", MessageBoxButtons.YesNoCancel) == DialogResult.Yes) { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { SaveDocument(saveFileDialog1.FileName); } } } } catch (Exception Newe) { MessageBox.Show("에러 : " + Newe.Message, "Error"); } finally { TextBox.Clear(); } SaveCheck = false; EditText = false; } // 파일 - 열기 private void menu_OpenFile_Click(object sender, EventArgs e) { try { if (openFileDialog1.ShowDialog() == DialogResult.OK) OpenDocument(openFileDialog1.FileName); } catch (Exception Opene) { MessageBox.Show("에러 : " + Opene.Message, "Error"); } } // 파일 - 저장 private void menu_SaveFile_Click(object sender, EventArgs e) { SaveYorN(); } // 파일 - 다른 이름으로 저장 private void menu_AFile_Click(object sender, EventArgs e) { SaveYorN(); } // 파일 - 페이지 설정 private void menu_PageFile_Click(object sender, EventArgs e) { PrintDocument pd = new PrintDocument(); pd.DocumentName = TextBox.Text; pageSetupDialog1.Document = pd; pageSetupDialog1.ShowDialog(); } // 파일 - 인쇄 private void menu_PrintFile_Click(object sender, EventArgs epp) { printFont = new Font("Arial", 10); PrintDocument pd = new PrintDocument(); pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage_1); pd.Print(); } // 파일 - 끝내기 private void menu_EndFile_Click(object sender, EventArgs e) { Application.Exit(); } | cs |
6. 편집 기능
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | // 편집 - 찾기 private void menu_FindEdit_Click(object sender, EventArgs e) { FindForm = new Find(TextBox); FindForm.Show(this); } // 편집 - 다음 찾기 private void menu_NextEdit_Click(object sender, EventArgs e) { } // 편집 - 바꾸기 private void menu_ReEdit_Click(object sender, EventArgs e) { ChangeForm = new Change(TextBox); ChangeForm.Show(); } // 편집 - 이동 private void menu_GoEdit_Click(object sender, EventArgs e) { GoForm = new Go(this); DialogResult result = GoForm.ShowDialog(); moveLine = moveLine - 1; int caretLine = 0; int caretPos = TextBox.TextLength;//텍스트박스의 전체 문자열 길이를 반환 char[] charText = TextBox.Text.ToCharArray();//전체 문자를 유니코드 배열에 복사 for (int i = 0; i < caretPos; i++)//처음부터 문자열 끝까지 검사 { if (charText[i].ToString().Equals("\n")) { caretLine++; if (caretLine == (moveLine))//이동할 라인과 같은 라인이 나오면... { //케럿의 위치를 반복한 위치(i)로 이동시킨 후 반복을 탈출 TextBox.SelectionStart = i + 1; break; } } } } // 편집 - 모두선택 private void menu_AllEdit_Click(object sender, EventArgs e) { TextBox.SelectAll(); } // 편집 - 시간 / 날짜 private void menu_DateEdit_Click(object sender, EventArgs e) { TextBox.Text = TextBox.Text.Insert(TextBox.SelectionStart, DateTime.Now.ToString()); } | cs |
[C# 메모장 프로그램 (윈도우 notepad 소스 코드)]
7. 글꼴 관리
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | // 서식 - 자동 줄 바꿈 private void menu_WOri_Click(object sender, EventArgs e) { TextBox.WordWrap = TextBox.WordWrap ? false : true; } // 서식 - 글꼴 private void menu_FOri_Click(object sender, EventArgs e) { fontDialog1.ShowDialog(); TextBox.Font = fontDialog1.Font; } // 서식 - 색상 private void menu_ColorOri_Click(object sender, EventArgs e) { colorDialog1.ShowDialog(); TextBox.SelectionColor = colorDialog1.Color; } | cs |
8. 메뉴 - 보기
1 2 3 4 5 6 7 8 9 10 11 | // 보기 - 상태 표시줄 private void menu_StatusView_Click(object sender, EventArgs e) { statusStrip1.Visible = statusStrip1.Visible ? false : true; } // 보기 - 실행 아이콘 private void menu_PlayView_Click(object sender, EventArgs e) { toolStrip1.Visible = toolStrip1.Visible ? false : true; } | cs |
9. 메뉴 - 도움말
1 2 3 4 5 6 7 8 9 10 11 12 | // 도움말 - 도움말 항목 private void menu_HangHelp_Click(object sender, EventArgs e) { HangHelp hh = new HangHelp(); hh.Show(); } // 도움말 - 메모장 정보 private void menu_JungHelp_Click(object sender, EventArgs e) { } | cs |
10. 실행 아이콘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | // 아이콘 - 새로만들기 private void 새로만들기NToolStripButton_Click(object sender, EventArgs e) { try { if (TextBox.Text != "") { if (MessageBox.Show(this, "작업중인 문서 저장?", "저장", MessageBoxButtons.YesNoCancel) == DialogResult.Yes) { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { SaveDocument(saveFileDialog1.FileName); } } } } catch (Exception Newe) { MessageBox.Show("에러 : " + Newe.Message, "Error"); } finally { TextBox.Clear(); } } // 아이콘 - 열기 private void 열기OToolStripButton_Click(object sender, EventArgs e) { try { if (openFileDialog1.ShowDialog() == DialogResult.OK) OpenDocument(openFileDialog1.FileName); } catch (Exception Opene) { MessageBox.Show("에러 : " + Opene.Message, "Error"); } } // 아이콘 - 저장 private void 저장SToolStripButton_Click(object sender, EventArgs e) { SaveYorN(); } // 아이콘 - 인쇄 private void 인쇄PToolStripButton_Click(object sender, EventArgs e) { printFont = new Font("Arial", 10); PrintDocument pd = new PrintDocument(); pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage_1); pd.Print(); } // 아이콘 - 왼쪽 정렬 private void AlignLeft_Click(object sender, EventArgs e) { TextBox.SelectionAlignment = HorizontalAlignment.Left; } // 아이콘 - 가운데 정렬 private void AlignCenter_Click(object sender, EventArgs e) { TextBox.SelectionAlignment = HorizontalAlignment.Center; } // 아이콘 - 오른쪽 정렬 private void AlignRight_Click(object sender, EventArgs e) { TextBox.SelectionAlignment = HorizontalAlignment.Right; } // 아이콘 - 잘라내기 private void 잘라내기UToolStripButton_Click(object sender, EventArgs e) { TextBox.Cut(); } // 아이콘 - 복사 private void 복사CToolStripButton_Click(object sender, EventArgs e) { TextBox.Copy(); } // 아이콘 붙여넣기 private void 붙여넣기PToolStripButton_Click(object sender, EventArgs e) { TextBox.Paste(); } // 아이콘 - 도움말 private void 도움말LToolStripButton_Click(object sender, EventArgs e) { } | cs |
11. 파일 - 저장
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | // 파일 저장 private bool SaveYorN() { try { if (SaveCheck == false) { if (MessageBox.Show("저장", "메모장", MessageBoxButtons.YesNo) == DialogResult.Yes) { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { SaveDocument(saveFileDialog1.FileName); SaveCheck = true; EditText = false; } } } } catch (Exception e) { MessageBox.Show("bool SaveYorn Error" + e.Source); } finally { TextBox.SelectionStart = 0; } return false; } // 파일 저장 문서 public void SaveDocument(string FileName) { StreamWriter SaveText = new StreamWriter(FileName, false, System.Text.Encoding.Default); SaveText.Write(TextBox.Text); SaveText.Close(); } | cs |
12. 문서 열기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // 문서 열기 public void OpenDocument(string FileName) { try { StreamReader sr = new StreamReader(FileName, System.Text.Encoding.Default); TextBox.Text = sr.ReadToEnd(); TextBox.SelectionStart = 0; sr.Close(); SaveCheck = false; } catch (Exception e) { MessageBox.Show("OpenDocument에서 에러 발생\n" + e.Message + "\n" + e.Source); } } | cs |
13. 인쇄
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | // 인쇄 private void pd_PrintPage_1(object sender, PrintPageEventArgs ev) { streamToPrint = TextBox.Text; float linesPerPage = 0; float yPos = 0; int count = 0; float leftMargin = ev.MarginBounds.Left; float topMargin = ev.MarginBounds.Top; string line = null; if (streamToPrint == null) { MessageBox.Show("아하하하하하하"); } MessageBox.Show(streamToPrint); linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics); try { yPos = topMargin + (count * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString(streamToPrint, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); } catch (Exception epe) { MessageBox.Show(epe.Message + "\n" + epe.InnerException); } if (line != null) ev.HasMorePages = true; else ev.HasMorePages = false; } | cs |
C# 메모장 프로그램 (윈도우 notepad 소스 코드)
반응형