Menu を登録

Memo2 のメニューを登録します。

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

メニューを登録

  1. Memo2 のメニューを登録します。
    Layout で MenuStrip と ToolStrip は設定済みです。
    親メニュー 子メニュー メソッド 説明
    ファイル(&F)
    ファイルを開く(&O) Open Memo ファイルをオープンします
    上書き保存(&S) Save ファイルを上書き保存します
    別名で保存(&A) SaveAT ファイルを別名で保存します
    新規ファイル(&N) NewFile 新規ファイルを作成します
    終了(&X) Exit プログラムを終了します
    ツリー(&T)
    ☆兄弟項目を追加(&S) Add_Sibling 空の兄弟項目を追加します
    ・子項目を追加(&I) Add_Child 空の子項目を追加します
    削除/ごみ箱(&D) Del_Node 項目を削除します(ごみ箱へ移動)
    コピー(&C) Copy_Node 項目を記録します
    記憶して切り取り(&T) Cut_Node 項目を記録して切り取ります
    ☆兄弟で貼り付け(&P) Ins_Sibling 記録した項目を兄弟で貼り付けます
    ・子で貼り付け(&Q) Ins_Child 記録した項目を子で貼り付けます
    テキスト(&T)
    コピー(&C) Text_Copy 選択した TEXT をコピーします
    削除(&D) Text_Cut 選択した TEXT を削除します
    貼り付け(&P) Text_Paste コピーした TEXT を貼り付けます
    元に戻す(&U) Text_Undo 編集を取り消してもとに戻します
    やり直す(&R) Text_Redo 取り消した編集を戻します
    編集(&E) Editor 選択ファイルを Editor で起動します
    検索(&S)
    キー(&K) KeyType 検索(置き換)キーをタイプします
    タイトル(&T) TSearch タイトルを検索します
    テキスト検索(&S) Search TEXT を検索します
    置き換え(&R) Replace TEXT を置き換えます
    ユーザー設定(&U)
    ファイルを起動(&E) Exec 既定のプログラムから起動します
    フォントを設定(&F) SetFont フォントを設定します
    リスト(&L) TopList トップからのリストを印字します
    パスワード(&P) PassWord パスワードをタイプします
    設定(&S) SetPass パスワードを設定します
    解除(&R) ResetPass パスワードを解除します
    ヘルプ(&H)
    バージョン情報(&A) HelpAbout バージョン情報を表示します
  2. CSForm.cs のデザイン画面を表示します。
    上の表に従ってメニューを登録して下さい。
    メニューの中に Separator を挿入しています。先頭の画像を参考にして下さい。
    ToolBox からメニューを貼り付ける を参考にデザイン画面から設定します。
  3. メニューを処理するイベントハンドラを作成します。
    例えば [終了(X)] を選択してプロパティからイベント(稲妻のアイコン)をクリックします。
    Click に [Exit] とタイプすると Exit() メソッドが追加されます。
    上の表を参照して、すべてのイベントハンドラを作成して下さい。
  4. プログラムを終了する Exit() メソッドを実装します。
    Exit() メソッドでは this.Close(); で Form_Closing() メソッドを呼び出すだけです。
    this.Dispose() でプロセスを強制終了することも出来るのですが、「×」ボタンのクリックで呼び出される Form_Closing() と併せて処理をします。
        private void Exit(object sender, EventArgs e)
        {   this.Close();  }
    
  5. MyForm() でプログラムをロードするときに一度だけ呼ばれる MyForm_Load() と、プログラムを終了するときに呼ばれる Form_Closing() を設定します。
        public MyForm()
        {
            InitializeComponent();
            this.Resize += new System.EventHandler(this.FormResize);
            this.Load += new System.EventHandler(MyForm_Load);
            this.FormClosing += new FormClosingEventHandler(Form_Closing);
        }
    
  6. Exit() メソッドの実行と、「×」ボタンのクリックで呼び出される Form_Closing() メソッドです。
    CheckText() 関数は RichTextBox の修正を調べて ArrayList を更新する関数です。
    ArrayList を更新せずに終了すると RichTextBox の編集結果が失われます。
    今回は m_UP フラグを仮に true に設定して、終了前に保存確認を行っています。
    CheckText() 関数は RichTextBox で説明しています。
        bool    m_UP = true;        // ファイル更新フラグ
    
        private void Form_Closing(object sender, FormClosingEventArgs e)
        {
            DialogResult rc;
            CheckText();
            if (m_UP)
            {
                rc = MessageBox.Show("保存しないで終了?", "選択", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (rc == DialogResult.No) e.Cancel = true;
            }
        }
    
  7. バージョンを表示する HelpAbout() メソッドです。
    TitleBar に Memo ファイル名を表示して、treeView1 と richTextBox1 を TopNode に設定します。
        string      m_file = "C:\\TMP\\Test2.mem";
    
        private void HelpAbout(object sender, EventArgs e)
        {
            MessageBox.Show("Memo2 Program  Ver 0.0");
            this.Text = m_file;
            richTextBox1.Text = (string)t_txt[m_Idx];
            treeView1.SelectedNode = (TreeNode)t_node[m_Idx];
            treeView1.Select();
        }
    
  8. プログラムを実行して、メニューの動作を確認して下さい。
    ショートカットを使って、メニューを呼び出してみましょう。
    ゆっくりと[Alt][F][X]の順にタイプすると「終了」メニューが実行されます。
    同様に[Alt][H][A]の順にタイプすると「バージョン情報」メニューが実行されます。
    残りのメニューの実装は、講座の進展に合わせて説明します。

[Next Chapter ↓] Edit Menu
[Previous Chapter ↑] RitchTextBox

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