본문 바로가기
코딩

(C#)메모장 만들기

by 컴쟁이 2021. 1. 23.
반응형

안녕하세요 여러분.

지금 여러분들은 난 분명 엔트리 kscript01의 글의 링크를 눌렀는데

왜 여기로 와지냐라고 하는분들이 있는데 그게 저니까 빠르게 진행할게요.

 

소스코드

// 저작권 : 엔트리 Kscipt01
// 꼭 공유하실때에는 저작권을 표시해주시기 바랍니다

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace Notepad
{
    public partial class Form1 : Form
    {
        string filepath = "";
        private string filePath;

        public Form1()
        {
            InitializeComponent();
        }

        private void vkdlfToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        private void 새로만들기ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            filePath = "";
            if (richTextBox1.Text == "")
            {

            }
            else
            {
                DialogResult dialogResult = MessageBox.Show("저장하지 않고 계속하시겠습니까?", "Hello COM 메모장", MessageBoxButtons.YesNo);
                bool flag = dialogResult == DialogResult.Yes;
                if (flag)
                {
                    Form1 main = new Form1();
                    main.Show();
                }
                else
                {
                    bool flag2 = dialogResult == DialogResult.No;
                    if (flag2)
                    {
                        if (string.IsNullOrEmpty(filepath))
                        {
                            using (SaveFileDialog sfd = new SaveFileDialog() { Filter = "TextDocument | *.txt", ValidateNames = true })
                            {
                                if (sfd.ShowDialog() == DialogResult.OK)
                                {
                                    using (StreamWriter sw = new StreamWriter(sfd.FileName))
                                    {
                                        sw.WriteLineAsync(richTextBox1.Text);
                                    }
                                }

                            }
                        }
                        else
                        {
                            using (StreamWriter sw = new StreamWriter(filePath))
                            {
                                sw.WriteLineAsync(richTextBox1.Text);
                            }
                        }
                    }
                }
            }
        }

        private void 저장ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(filepath))
            {
                using (SaveFileDialog sfd = new SaveFileDialog() { Filter = "TextDocument | *.txt", ValidateNames = true })
                {
                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        using (StreamWriter sw = new StreamWriter(sfd.FileName))
                        {
                            sw.WriteLineAsync(richTextBox1.Text);
                        }
                    }

                }
            }
            else
            {
                using (StreamWriter sw = new StreamWriter(filePath))
                {
                    sw.WriteLineAsync(richTextBox1.Text);
                }
            }
        }

        private void 열기ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "TextDocument|*.txt", ValidateNames = true, Multiselect = false })
            {
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    using (StreamReader sr = new StreamReader(ofd.FileName))
                    {
                        filePath = ofd.FileName;
                        Task<string> text = sr.ReadToEndAsync();
                        richTextBox1.Text = text.Result;

                    }
                }
            }
        }

        private void 다른이름으로저장ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            using (SaveFileDialog sfd = new SaveFileDialog() { Filter = "", ValidateNames = true })
            {
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    using (StreamWriter sw = new StreamWriter(sfd.FileName))
                    {
                        sw.WriteLineAsync(richTextBox1.Text);
                    }
                }

            }
        }

        private void 인쇄미리보기ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            printPreviewDialog1.Document = printDocument1;
            printPreviewDialog1.ShowDialog();
        }

        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            e.Graphics.DrawString(richTextBox1.Text, richTextBox1.Font, Brushes.Black, 12, 10);
        }

        private void 인ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            printPreviewDialog1.Document = printDocument1;
            if (printDialog1.ShowDialog() == DialogResult.OK)
            {
                printDocument1.Print();
            }
        }

        private void 종료ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void 실행취소ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.Undo();
        }

        private void 되돌리기ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.Redo();
        }

        private void 잘라내기ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.Cut();
        }

        private void 복사ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.Copy();
        }

        private void 붙여넣기ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.Paste();
        }

        private void 삭제ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.SelectedText = "";
        }

        private void 모두선택ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.SelectAll();
        }

        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {
            if (richTextBox1.Text.Length>0)
            {
                잘라내기ToolStripMenuItem.Enabled = true;
                복사ToolStripMenuItem.Enabled = true;
            }
            else
            {
                잘라내기ToolStripMenuItem.Enabled = false;
                복사ToolStripMenuItem.Enabled = false;
            }
        }

        private void 줄바꿈ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (줄바꿈ToolStripMenuItem.Checked==true)
            {
                줄바꿈ToolStripMenuItem.Checked = false;
                richTextBox1.WordWrap = false;
            }
            else
            {
                줄바꿈ToolStripMenuItem.Checked = true;
                richTextBox1.WordWrap = true;
            }
        }

        private void 글시체ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            fontDialog1.ShowDialog();
            richTextBox1.SelectionFont = new Font(fontDialog1.Font.FontFamily, fontDialog1.Font.Size, fontDialog1.Font.Style);
        }

        private void 텍스트하이라이트ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            richTextBox1.SelectionBackColor = Color.Yellow;
        }

        private void 도움말보기ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("https://support.microsoft.com/ko-kr/windows/%EB%A9%94%EB%AA%A8%EC%9E%A5%EC%9D%98-%EB%8F%84%EC%9B%80%EB%A7%90-4d68c388-2ff2-0e7f-b706-35fb2ab88a8c");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            richTextBox1.Text = "메모장에 오신걸 환영합니다." +
                "메모장의 출처는 엔트리 kscript01입니다";
        }
    }
}

 

아 근데 소스를 이상태로 붙여넣기하면 오류가 겁나 나니까 툴박스에서 이것들부터 넣으세요
-- richtextbox 넣으시고, 이름을 richTextbox1로 지정
-- openfiledialog 
-- savefiledialog
-- printpreviewdialog
-- printdocument
-- printdialog
-- fontdailog

그리고 메뉴스트립을 넣으시고, 이렇게 설정하세여. 한글자라도 틀리면 오류남(소스코드 고치던가)

맨 윗줄엔 이것들 넣으시고:
파일,편집,서식,도움말

각각의 메뉴스크립 아래에 이것들 넣으세요

파일 : 새로 만들기,열기,저장,다른 이름으로 저장,인쇄 미리보기,인쇄,종료
편집 : 실행취소,되돌리기,잘라내기,복사,붙여넣기,삭제 모두선택
서식 : 줄바꿈,글시체,텍스트 하이라이트
도움말 : 도움말 보기

그리고 편집 메뉴의 "잘라내기,복사" 는 속성가서 Enabled를 False로 바꿔주세요.

여기까지 여러분들이 잘 하셨다면 에러는 발생하지 않습니다.

만약 에러가 발생했다면 여러분이 무언가를 잘못 입력하신것입니다.
만일 자신이 모든걸 다 했다. 근데 에러가 발생했다라는 분들은

fanta09tv@gmail.com으로 메일을 보내주시거나 이 글에 댓글을 달아주시기 바랍니다.

이상 이 글을 봐주셔서 감사합니다!

반응형

'코딩' 카테고리의 다른 글

(파이썬) 파이썬으로 로그인 만들기!  (3) 2021.01.18