プログラムにおいて同じような処理が繰り返し必要な場合、その処理を毎回書くのはスマートではありません。 通常はサブルーチンを作って、そこに処理を記述しておきます。あとは必要な時にそのルーチンを呼び出せばOKです。
前のページまで見てきた、「タブページを追加し、エディタを乗せる」という処理は色々な場合に必要な処理です。 単に「新規作成」でタブを追加する,「開く」で新しいファイルを開く,ソフトウェアの起動時に1つタブを作っておく…と言った具合です。このページではこの処理をサブルーチン化してみます。
サブルーチンの作成
サブルーチンを作るには、だいたい以下のように記述します。
- private void ルーチン名(引数){処理}
- privateの部分は、他のフォームからも参照したければpublicでもOK。
- 引数はあっても無くても良い。
- 返す値の部分を"void"にするとサブルーチンになる。
では、タブを追加してエディタを乗せる処理をサブルーチンAddTab()に記述してみます。 といっても、button1のクリックイベントに書いていたものをそのまま移動させればOKです。
int cnt = 1;
List<RichTextBox> RTBList = new List<RichTextBox>();
//タブを追加しエディタを乗せるサブルーチン
private void AddTab()
{
string title = "page" + cnt.ToString();
TabPage newtab = new TabPage(title);
newtab.Name = title;
tabControl1.TabPages.Add(newtab);
RichTextBox rtb = new RichTextBox()
{
Name = "RichTextBox" + cnt.ToString(),
Dock = DockStyle.Fill
};
newtab.Controls.Add(rtb);
RTBList.Add(rtb);
tabControl1.SelectedIndex = tabControl1.TabCount - 1;
cnt++;
}
サブルーチンを呼び出す
サブルーチンを呼び出すのも簡単です。今回のルーチンをbutton1のクリックイベントと、ソフトウェア起動時のイベント(FormのLoadイベント)両方で呼び出してみたいと思います。
//「追加」ボタンのクリックイベント private void button1_Click(object sender, EventArgs e) { AddTab(); } //フォームが読み込まれた時のイベント private void Form1_Load(object sender, EventArgs e) { AddTab(); }
ご覧の通り、サブルーチンAddTab()を呼び出すだけです。同じ処理を別々の所に書いていては効率が悪いですが、 サブルーチンに記述しておけばこのようにどこからでも呼び出すことが可能です。
ソフトを起動した直後の状態
上図を見ると分かりますが、ソフトウェアを起動した時点でタブが一つ追加されています。これはForm1のLoadイベントでAddTab()が実行されたことを意味しています。
「追加」ボタンを押しても、今まで通りタブが追加されていきます。
次はテキストファイルの読み書きの方法について書いてみます。