RichTextBox

TreeView で選択された node の Text Data を RichTextBox に表示します。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. TreeView で選択された node の Text Data を RichTextBox に表示します。
    プログラムの起動時には、先頭の node の Text Data を表示します。
        public MyForm()
        {
            InitializeComponent();
            this.Resize += new System.EventHandler(this.FormResize);
            Load += new System.EventHandler(MyForm_Load);
        }
    
        // アプリケーションの初期化
        private void MyForm_Load(object sender, System.EventArgs e)
        {
            ReadFile("C:\\TMP\\test2.mem");
            m_Idx = 0;
            treeView1.TopNode.Expand();
            richTextBox1.Text = (string)t_txt[0];
        }
    
  2. TreeView の選択が変更された時に treeView1_AfterSelect() を呼び出します。
            // 
            // treeView1
            // 
            this.treeView1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.treeView1.Location = new System.Drawing.Point(0, 0);
            this.treeView1.Name = "treeView1";
            this.treeView1.Size = new System.Drawing.Size(326, 495);
            this.treeView1.TabIndex = 0;
            this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect);
    
  3. Memo2 のデータは ArrayList に記録しているので、TreeView や RichTextBox が修正されたときは ArrayList も更新しなければなりません。
    treeView1_AfterSelect() 関数で TreeView が変更されたことを知るのですが、このとき CheckText() 関数で RichTextBox の修正データを ArrayList に保存します。
    保存が終わると、新しく選択された node の番号を調べて該当する t_txt を RichTextBox に表示します。
    Title(TextBox) に node のタイトルと作成日付・更新日付を表示します。
        // Tree View の選択が変更された時の処理
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            CheckText();
            for (m_Idx = 0; m_Idx < t_node.Count && (TreeNode)t_node[m_Idx] != e.Node; m_Idx++);
            if (m_Idx < t_node.Count)
            {
                richTextBox1.Text = (string)t_txt[m_Idx];
                richTextBox1.Select(m_Idx, 0);
                Title.Text = (string)t_ttl[m_Idx] + "(" + (string)t_ymd[m_Idx] + ")";
            }
        }
    
  4. CheckText() 関数は richTextBox1 が修正されたとき ArrayList を更新する関数です。
    m_Idx には、現在選択されている ArrayList のインデックスが設定されます。
    RichTextBox が修正されると richTextBox1.Modified が true に設定されます。
    richTextBox1.Modified はシステムが設定してくれますが、リセットはユーザーの責任で行って下さい。
    SetDate() 関数で、更新日付を本日に設定します。
    m_UP は Memo ファイルが修正されたことを示すフラグで、終了時に保存確認を行います。
        // richTextBox1 を調べて ArrayList を更新
        private void CheckText()
        {
            if (richTextBox1.Modified && m_Idx<t_txt.Count)
            {
                t_txt[m_Idx] = richTextBox1.Text;
                SetDate(m_Idx);
                m_UP = true; 
                richTextBox1.Modified = false;
            }
        }
    
  5. Memo アプリでは Node ごとの作成日付と更新日付を管理しています。
    SetDate() 関数では TEXT が修正されたとき、更新日付を更新します。
    Memo File の初期バージョンと新バージョンでは、日付の形式が異なるので古いときは新形式に変換しています。
    YYMMDD:YYMMDD の前半分が作成日付で、後半分が更新日付です。
    Title.Text に表示される日付を確認して下さい。
        // 更新日付の設定
        private void SetDate(int idx)
        {
            string ymd, str;
            str = DateTime.Now.ToString();
            ymd = (string)t_ymd[idx];
            if (ymd.Length < 20)    // YYMMDD:YYMMDD
            {
                str = "20" + ymd.Substring(0, 2) + "/" + ymd.Substring(2, 2) + "/"
                      + ymd.Substring(4, 2) + ":" + str.Substring(0, 10);
            }
            else                // YYYY/MM/DD:YYYY/MM/DD 
            { str = ymd.Substring(0, 11) + str.Substring(0, 10); }
            t_ymd[idx] = str;
        }
    

[Next Chapter ↓] Menu を登録
[Previous Chapter ↑] Memo Tree View

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