C#備忘録C#でTabPageにRichTextBoxを乗せる

作成日:2018.12.03
  1. HOME
  2. 趣味のページ
  3. C#でTabPageにRichTextBoxを乗せる

前のページではタブページを追加したり削除したりする方法を見ることができましたが、 ここではそのタブページにエディタ本体であるRichTextBoxを乗せる方法を記しておきたいと思います。

RichTextBoxを乗せる方法

タブページにエディタを乗せるプロジェクトのフォーム

まずは上図のようなフォームにtabControlとbuttoon2つを設置します(2つ目のボタンは次ページで使います)。

新たに作られたタブページにRichTextBoxを乗せるには、以下のようにします。

int cnt = 1; 

private void button1_Click(object sender, EventArgs e)
{
	//タブページを追加する
	string title = "page" + cnt.ToString();
	TabPage newtab = new TabPage()
	{
		Name = title,
		Text = title
	};
	tabControl1.TabPages.Add(newtab);

	//RichTextBoxを乗せる
	RichTextBox rtb = new RichTextBox()
	{
		Name = "RichTextBox" + cnt.ToString(),
		Dock = DockStyle.Fill
	};
	newtab.Controls.Add(rtb);

	tabControl1.SelectedIndex = tabControl1.TabCount - 1;
	cnt++;
}

タブページを追加する方法は前のページで見たとおりです。そのページに今度はRichTextBoxを作成して追加しています。

上記スクリプトの説明

RichTextBox rtb = new RichTextBox()
{
	Name = "RichTextBox" + cnt.ToString(),
	Dock = DockStyle.Fill
};

まずはnew RichTextBox()で新たなリッチテキストボックス(rtb)を作成します。

中カッコ内ではプロパティを指定します。上の場合、RichTextBoxの名前(Name)を「RichTextBox+通し番号」、配置(Dock)を全体に広げる(Fill)に設定しました。

newtab.Controls.Add(rtb);

そして、TabPage.Controls.Add()を使って、作成したRichTextBoxをタブページに追加しています。 コントロールの配置をDock.Fillにしているので、作成されたRichTextBoxがタブページ全体に広がります(下図)。

RichTextBoxがタブページ全体に広がっている

ただし実際にHTMLエディタを作成するには、RichTextBoxのプロパティをもっと詳細に指定しなければならないでしょう。一例として今回作った"HTML5Editor Ver.2"のRichTextBoxのプロパティは以下のように指定しました。

RichTextBox rtb = new RichTextBox()
{
	Name = "RichTextBox" + cnt.ToString(), //名前
	Dock = DockStyle.Fill, //配置を全体に広がる(Fill)に
	Multiline = true, //複数行表示にする
	Font = new Font("メイリオ", 10), //フォントの指定
	WordWrap = false, //折り返し(初期は折り返し無し)
	HideSelection = false, //フォーカスが外れても選択箇所を表示しておく
	ShortcutsEnabled = true, //Ctrl+Cなどのショートカットを有効にする
	AcceptsTab = true, //Tabキーでタブ文字を入力できるようにする
	LanguageOption = RichTextBoxLanguageOptions.UIFonts, //フォントが勝手に変更されるのを防ぐ
	SelectionIndent = 6, //左余白を6pxに指定
	EnableAutoDragDrop = true, //テキストをドラッグで移動・コピー可能に
	ContextMenuStrip = EditPop //コンテキストメニューを指定
};

クリックされた時などのイベントを指定する方法はまた別の所で説明します。


次のページではLISTを使って、作成されたRichTextBoxにアクセスする方法を書いてみます。