TabPage のクリック

TabPage のクリックで RichTextBox にページ番号を表示します。

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

プログラムの説明

  1. Text Editor の開発において、TabControl と RichTextBox の従属関係を調べるのが目的でプログラムしました。
    Visual Studio Professional 2013 Preview で作成したプログラムが 2005 でうまく動作しないので調査します。
    このプログラムは次の環境でテストしました。
     ※Windows 8.1(2014/04/13 Update 版)
     ※Microsoft Visual Studio 2005
  2. メニューから [ファイル/新規作成/プロジェクト] を選択します。
    テンプレートから [Visual C#/Windows/Windowsフォームアプリケーション] を選択します。
    名前は規定値で [WindowsFormsApplication1] になっています。
  3. Form のデザインを表示して幅を広げます。
    [ツールボックス] から [MenuStrip] を貼り付けます。
    メニューを設定してイベントハンドラを作成します。
    グループ メニュー メソッド
    ファイル(&F)ページ追加(&A)Add メソッド
    終了(&X)Exit メソッド
  4. [ツールボックス] から [tabControl] を横長に貼り付けます。
    tabControl の tabPage2 を選択して、右クリックメニューで削除します。
    Form の下は RichTextBox 用に空けておきます。
  5. Form を選択した状態で、Form の下部に RichTextBox を張り付けます。
    配置によっては tabControl が表示されなくなります。
    また操作中に tabControl に重なると従属するようなので、離れて配置して下さい。
    TabPage に従属すると、ページを切り替えたときに RichTextBox が表示されません。
  6. メニューをコーディングします。
    Add() メソッドで tabPage を追加します。
    Exit() メソッドでプログラムを終了します。
        int m_Page = 2;
    
        private void Add(object sender, EventArgs e)
        {
            TabPage tab = new TabPage("Page" + m_Page);
            tabControl1.TabPages.Add(tab);
            m_Page++;
        }
        private void Exit(object sender, EventArgs e)
        {
            this.Close();
        }
    
  7. TabControl を選択して Selected イベントを設定します。
    tabSelected イベントをコーディングします
        private void tabSelected(object sender, TabControlEventArgs e)
        {
            richTextBox1.Text = "Tab Page:\r\n" + e.TabPageIndex;
        }
    
  8. TabControl の Dock を Fill に設定すると Form の拡大/縮小でフィットします。
    RichTextBox には Dock の Fill は使えないようです。
    RichTextBox の再配置が必要なときは、Form の Resize で計算して下さい。
  9. プログラムを実行して、メニューから [ページ追加] を選ぶと TAB にページが追加されます。
    TabPage をクリックすると、選択されたページが RichTextBox に表示されます。
  10. Form1.Designer.cs を調べると RichTextBox が Form に直接貼り付けられているのが解ります。
        this.Controls.Add(this.richTextBox1);
        this.Controls.Add(this.tabControl1);
    
    RichTextBox が tabPage1 に従属している場合です。
    この状態では tabPage1 には RichTextBox が表示されるのですが、ページを切り替えると表示されなくなります。
        // tabPage1
        this.tabPage1.Controls.Add(this.richTextBox1);
    

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