プログラムの仕上げ
最後に、プログラムの機能を組み込みます。
まず、フォームにRichTextBoxコントロールを配置し、Dockプロパティを「Fill」にします。そして、「FontDialog」「ColorDialog」の2つのダイアログコントロールを配置します。
処理コードの作成
各メニューが選択された時の処理は、それぞれのC1CommandオブジェクトのClickイベントハンドラに作成します。フォームデザイナで各メニューコマンドをダブルクリックすると、Clickイベントハンドラが作成されます。CheckBoxコントロールは、そのままCheckBoxコントロールのイベントハンドラを利用します。
ここでは、「ファイル」メニューの「新規作成」コマンドと「編集」「書式」メニューのすべてのコマンド、CheckBoxコントロールに、それぞれRichTextBoxコントロールを操作する処理を組み込んでいます。
Public Class Form1 Private Sub c1Command1_Click(ByVal sender As System.Object, ByVal e As C1.Win.C1Command.ClickEventArgs) Handles c1Command1.Click RichTextBox1.Text = sender.Text & "が選択されました" End Sub Private Sub c1Command6_Click(ByVal sender As System.Object, ByVal e As C1.Win.C1Command.ClickEventArgs) Handles c1Command6.Click RichTextBox1.Undo() End Sub Private Sub c1Command7_Click(ByVal sender As System.Object, ByVal e As C1.Win.C1Command.ClickEventArgs) Handles c1Command7.Click RichTextBox1.Cut() End Sub Private Sub c1Command8_Click(ByVal sender As System.Object, ByVal e As C1.Win.C1Command.ClickEventArgs) Handles c1Command8.Click RichTextBox1.Copy() End Sub Private Sub c1Command9_Click(ByVal sender As System.Object, ByVal e As C1.Win.C1Command.ClickEventArgs) Handles c1Command9.Click RichTextBox1.Paste() End Sub Private Sub C1Command10_Click(ByVal sender As System.Object, ByVal e As C1.Win.C1Command.ClickEventArgs) Handles C1Command10.Click FontDialog1.ShowDialog() RichTextBox1.SelectionFont = FontDialog1.Font End Sub Private Sub C1Command11_Click(ByVal sender As System.Object, ByVal e As C1.Win.C1Command.ClickEventArgs) Handles C1Command11.Click ColorDialog1.ShowDialog() RichTextBox1.SelectionColor = ColorDialog1.Color End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = True Then RichTextBox1.BackColor = Color.Aqua Else RichTextBox1.BackColor = Color.White End If End Sub End Class
namespace mymenu_cs { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void c1Command1_Click(object sender, C1.Win.C1Command.ClickEventArgs e) { richTextBox1.Text = c1Command1.Text + "が選択されました"; } private void c1Command5_Click(object sender, C1.Win.C1Command.ClickEventArgs e) { richTextBox1.Undo(); } private void c1Command6_Click(object sender, C1.Win.C1Command.ClickEventArgs e) { richTextBox1.Cut(); } private void c1Command7_Click(object sender, C1.Win.C1Command.ClickEventArgs e) { richTextBox1.Copy(); } private void c1Command8_Click(object sender, C1.Win.C1Command.ClickEventArgs e) { richTextBox1.Paste(); } private void c1Command10_Click(object sender, C1.Win.C1Command.ClickEventArgs e) { fontDialog1.ShowDialog(); richTextBox1.SelectionFont = fontDialog1.Font; } private void c1Command11_Click(object sender, C1.Win.C1Command.ClickEventArgs e) { colorDialog1.ShowDialog(); richTextBox1.SelectionColor = colorDialog1.Color; } private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked == true) { richTextBox1.BackColor = Color.Aqua; } else { richTextBox1.BackColor = Color.White; } } } }
まとめ
C1MainMenuコントロールは、このようにメニュー作成作業の工数をかなり短縮してくれるコントロールです。加えて、標準のメインメニューにはない機能まで備えているので、他のアプリケーションと一味違うメニューを実装したい方には、お勧めのコントロールです。