Text File

RichTextBox にファイルからテキストデータを入力/保存します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの作成

  1. 起動時にファイルからテキストデータを入力して、終了時に修正データを保存します。
    Visual Studio を起動してベースとなるプロジェクトファイルを開いて下さい。
    詳細は RichTextBox を参照して下さい。
    ウインドウサイズを広げて、ツールボックスからフォームに RichTextBox を貼り付けます。
    RichTextBox の機能は、一部を除いて TextBox でも使えるので試して下さい。
  2. テキストデータを入力するので using を追加して下さい。
    using System.IO;    // for File, StreamReader
    using System.Text;  // for Encoding
    
  3. form.cs の MyForm の Constructor です。
    "C:\\data\\test\\unicode.txt" から RichTextBox にデータを入力します。
    "unicode.txt" は Unicode でタイプされた TEXT FILE です。
    事前に "C:\\data\\test" のフォルダに "unicode.txt" を格納しておいて下さい。
    TEXT FILE の入力は TEXT File の入力 を参照して下さい。
    RichTextBox では、改行コード(\n)を区切りとして sring[] 配列に格納されるようです。
    ReadLine() で入力した1行分のデータに改行コードを付加して AppendText() で追加します。
        public MyForm()
        {
            InitializeComponent();
            string file_name = "C:\\data\\test\\unicode.txt";
            StreamReader reader = new StreamReader(file_name);
            string A;
            while((A=reader.ReadLine()) != null)
            {
                richTextBox1.AppendText(A + "\n");
            }
            reader.Close();
        }
    
  4. 全データを一括して入力することも出来ます。
        public MyForm()
        {
            InitializeComponent();
            string file_name = "C:\\data\\test\\unicode.txt";
            StreamReader reader = new StreamReader(file_name);
            string A;
            A = reader.ReadToEnd();
            richTextBox1.Text = A;
            reader.Close();
        }
    
  5. プログラムの終了時に修正データを保存します。
    FormClosedのイベントハンドラを設定して下さい。
        // 
        // MyForm
        // 
        this.ClientSize = new System.Drawing.Size(575, 433);
        this.Controls.Add(this.richTextBox1);
        this.Name = "MyForm";
        this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MyForm_FormClosed);
        this.ResumeLayout(false);
          ・・・
    
  6. MyForm_FormClosed() で修正されたテキストデータを "C:\\tmp\\work.txt" に規定値の文字コードで保存します。
    richTextBox1.Lines[i] がi行目のテキストで改行コードを付加して保存します。
    Text File の出力は TEXT File の出力 を参照して下さい。
        private void MyForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            string file_name = "C:\\tmp\\work.txt";
            StreamWriter writer = new StreamWriter(file_name, false);
            for (int i = 0; i < richTextBox1.Lines.Length; i++)
            {
                writer.Write(richTextBox1.Lines[i] + "\r\n");
            }
            writer.Close();
        }
    
  7. 入力と同様に、全データを一括して保存することも出来ます。
    今回は Unicode("utf-16") で保存してみました。
        private void MyForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            string file_name = "C:\\tmp\\work.txt";
            StreamWriter writer = new StreamWriter(file_name, false, Encoding.GetEncoding("utf-16"));
            writer.Write(richTextBox1.Text);
            writer.Close();
        }
    

【NOTE】

  1. RichTextBox に表示された TEXT を適当に編集(コピー, 削除, 貼り付け)してみて下さい。
    TextBox では自動的に ContextMenu が設定されたのですが RichTextBox には設定されません。
    MSDN には「自動的に設定される」とあったような気がするのですが。 (^_^;)
    ContextMenu は ContextMenuを設定する を参照して下さい。
  2. Ctrl キーで操作する一般的な「コピー&ペースト」は使えるので試して下さい。
    1. 文字列を選択状態に設定
    2. [Ctrl+C] キーでクリッブボードにコピー
    3. 貼り付ける位置にカーソルを移動
    4. [Ctrl+V] キーでクリッブボードから貼り付け
    5. 選択状態の文字列は Delete キーで削除できる
  3. このプログラムで入力している "C:\\data\\test\\unicode.txt" は Unicode(16 bit)で作成されています。
    所が規定値で保存している "C:\\tmp\\work.txt" は Unicode(UTF-8)で保存されているようです。
    UTF-8 のファイルも、このプログラムで入力することが出来るので、最初は気が付きませんでした。
    Unicode(16 bit)で保存するには、次のように書き換えて下さい。
    StreamWriter writer = 
        new StreamWriter(file_name, false, Encoding.GetEncoding("utf-16"));
    
    2013/09/04 現在、C# のソースプログラムは UTF-8 で保存されていますが、Windows や Visual Studio のバージョンにより変わって行くのでしょうね。 (^_^;)

超初心者のプログラム入門(C# Frame Work)