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;namespace 记事本
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void FormMain_Load(object sender, EventArgs e)
        {
            richTextBox1.Dock = DockStyle.Fill;
            richTextBox1.Text = "";
            richTextBox1.AcceptsTab = true;
            richTextBox1.WordWrap = false;
            richTextBox1.ReadOnly = false;
        }        private void richTextBoxEdit_TextChanged(object sender, EventArgs e)
        {        }        private void ToolStripMenuItemOpen_Click(object sender, EventArgs e)
        {
            string file = GetOpenFile();
            if (file == null)
            {
                return;
            }
            else
            {
                currentFileName = file;
                OpenFile();
            }
        }
        private void OpenFile()
        {
            try
            {
                FileInfo f = new FileInfo(currentFileName);
                StreamReader reader = f.OpenText();
                richTextBox1.Text = reader.ReadToEnd();
                reader.Close();
                this.Text = "文本编辑--" + f.Name;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
        private string GetOpenFile()
        {
            OpenFileDialog openFile = new OpenFileDialog();
            openFile.Title = "打开文本文件";
            openFile.CheckFileExists = true;
            openFile.CheckPathExists = true;
            openFile.AddExtension = true;
            openFile.Multiselect = false;
            openFile.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
            if (openFile.ShowDialog() == DialogResult.OK)
            {
                return openFile.FileName;
            }
            else
            {
                return null;
            }
        }        private void ToolStripMenuItemSave_Click(object sender, EventArgs e)
        {
            if (currentFileName == null)
            {
                ToolStripMenuItemSaveAs_Click(sender, e);
            }
            else
            {
                SaveFile(richTextBox1.Text);
            }        
        }        private void ToolStripMenuItemSaveAs_Click(object sender, EventArgs e)
        {
            string file = GetSaveFile();
            if (file == null)
            {
                return;
            }
            else
            {
                currentFileName = file;
                SaveFile(richTextBox1.Text);
                FileInfo f = new FileInfo(currentFileName);
                this.Text = "文本文档-" + f.Name;
            }
        }
        private void SaveFile(string str)
        {
            try
            {
                StreamWriter writer = new StreamWriter(currentFileName);
                writer.Write(str);
                writer.Close();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
        private string GetSaveFile()
        {
            SaveFileDialog saveFile = new SaveFileDialog();
            saveFile.Title = "保存文本文件";
            saveFile.OverwritePrompt = true;
            saveFile.CreatePrompt = true;
            saveFile.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
            if (saveFile.ShowDialog() == DialogResult.OK)
            {
                return saveFile.FileName;
            }
            else
            {
                return null;
            }
        }
        private void ToolStripMenuItemExit_Click(object sender, EventArgs e)
        {
            Close();
        }     
        private void ToolStripMenuItemUndo_Click(object sender, EventArgs e)
        {
            if (richTextBox1.CanUndo == true)
            {
                richTextBox1.Undo();
                richTextBox1.ClearUndo();
            }
        }        private void ToolStripMenuItemCut_Click(object sender, EventArgs e)
        {
            if (richTextBox1.SelectedText != "")
            {
                richTextBox1.Cut();
            }
        }        private void ToolStripMenuItemCopy_Click(object sender, EventArgs e)
        {
            if (richTextBox1.SelectionLength > 0)
            {                
                richTextBox1.Copy();
            }
           
        }        private void ToolStripMenuItemPast_Click(object sender, EventArgs e)
        {            
            if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text) == true)
            {
                if (richTextBox1.SelectionLength > 0)
                {
                    DialogResult result;
                    result = MessageBox.Show("你想覆盖掉选择的文本吗?", "覆盖确认", MessageBoxButtons.YesNo);
                    if (result == DialogResult.No)
                    {
                        richTextBox1.SelectionStart = richTextBox1.SelectionStart + richTextBox1.SelectionLength;
                    }
                }
                richTextBox1.Paste();
            }
            
        }        private void ToolStripMenuItemDel_Click(object sender, EventArgs e)
        {
            richTextBox1.SelectedText.Remove(1, richTextBox1.SelectionLength);        }        private void ToolStripMenuItemSelAll_Click(object sender, EventArgs e)
        {
            richTextBox1.SelectAll();
        }     
              private void contextMenuStrip_Opening(object sender, CancelEventArgs e)
        {
            if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
            {
                ToolStripMenuItemPast.Enabled = true;
            }
            else
            {
                ToolStripMenuItemPast.Enabled = false;
            }
            if (richTextBox1.SelectedText.Length > 0)
            {
                ToolStripMenuItemCopy.Enabled = true;
                ToolStripMenuItemCut.Enabled = true;
                ToolStripMenuItemDel.Enabled = true;
            }
            else
            {
                ToolStripMenuItemDel.Enabled = false;
                ToolStripMenuItemCut.Enabled = false;
                ToolStripMenuItemCopy.Enabled = false;
            }
            if (richTextBox1.CanUndo == true)
            {
                ToolStripMenuItemUndo.Enabled = true;
            }
            else
            {
                ToolStripMenuItemUndo.Enabled = false;
            }
        }        private void ToolStripMenuItemFont_Click(object sender, EventArgs e)
        {
            FontDialog fongDialog = new FontDialog();
            fongDialog.ShowColor = true;
            fongDialog.AllowScriptChange = true;
            fongDialog.AllowVectorFonts = true;
            fongDialog.ShowEffects = true;
            if (fongDialog.ShowDialog() == DialogResult.OK)
            {
                richTextBox1.SelectionFont = new Font("Verdana", 18, FontStyle.Bold);
                richTextBox1.SelectionColor = Color.Red;
            }
        }                private void ToolStripMenuItemNew_Click(object sender, EventArgs e)
        {
            
        }        private void ToolStripMenuItemWordWrap_Click(object sender, EventArgs e)
        {
            if (this.ToolStripMenuItemWordWrap.Checked)
            {
                richTextBox1.WordWrap = true;
            }
            else
            {
                richTextBox1.WordWrap = false;
            } 
        }        private void ToolStripMenuItemFile_Click(object sender, EventArgs e)
        {        }
    }
}