C#之使用RichTextBox 實現簡單的txt編輯器

sunlggggg發表於2016-10-24
  1. 設計要求
    支援文字的簡單編輯:
    支援更換文字的顏色,大小和字型。
    支援簡單TXT檔案的開啟和儲存。
    支援文字的拷貝,貼上和撤銷等操作。

  2. 設計
    一、設計FileInfo類,儲存文字的顏色、大小和字型,包括每一行的資訊。
    二、…

  3. 實現

    讀取RichTextBox的每一行

 private void 儲存ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //如果檔案以及
            try
            {
                //檔案路徑
                string path = string.Empty;
                SaveFileDialog save = new SaveFileDialog();
                save.Filter = "文字檔案(*.txt)|*.txt"; ;
                if (save.ShowDialog() == DialogResult.OK)
                    path = save.FileName;
                if (path != string.Empty)
                {
                    File.Delete(path);
                    StreamWriter sw = new StreamWriter(path, true);
                    for (int i = 0; i < richTextBox1.Lines.Length; i++)
                    {
                        sw.WriteLine(richTextBox1.Lines[i]);
                    }
                    sw.Flush();
                    sw.Close();
                    sw.Dispose();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }

從txt檔案中一行行讀取,賦予RichTextBox

     private void 開啟ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog fileDialog = new OpenFileDialog();
            //限定擴充套件
            fileDialog.Filter = "文字檔案(*.txt)|*.txt";
            fileDialog.Multiselect = true;
            fileDialog.Title = "請選擇檔案";
            if (fileDialog.ShowDialog() == DialogResult.OK)
            {
                string path = fileDialog.FileName;
                MessageBox.Show("已選擇檔案:" + path, "選擇檔案提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                FileStream file = File.Open(path, FileMode.Open);


                StreamReader filestream = new StreamReader(file);
                String line = "";
                int i = 0; 
                while ((line = filestream.ReadLine()) != null)
                {
                    richTextBox1.Text += line + "\n";
                } 
                file.Close();
            }
        }


  注意
                //判斷檔案是否存在
                if (File.Exists(path))
                {
                    DialogResult dr = MessageBox.Show("確認覆蓋原檔案嗎?", "提示", MessageBoxButtons.OKCancel);
                    if (dr == DialogResult.OK)
                    {
                        //刪除原檔案
                        File.Delete(path);
                    }
                    else if (dr == DialogResult.Cancel)
                    {
                        return;
                    }
                }

原來以為這個覆蓋判斷要自己去實現,但是Windows系統自己實現了。
這裡寫圖片描述

更改RichTextBox的字型顏色和字型大小
顏色

private void 顏色ToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            colorDialog1.ShowDialog();
            richTextBox1.SelectionColor =       this.colorDialog1.Color;
        }

字型和大小

fontDialog1.ShowDialog();
richTextBox1.Font = this.fontDialog1.Font;

接下來是我認為最難的撤銷操作
將在下一篇部落格中詳細介紹

相關文章