GUIの作成
今回作成するアプリケーションは、TextBoxコントロールとC1RadialMenuコントロールを使用し、テキストボックスをダブルクリックするとC1RadialMenuコントロールがポップアップするようにします。
C1RadialMenuコントロールは6つのメニューアイテムと4つのサブメニューを持ち、「DVD」メニューをクリックするとメッセージボックスを表示するようにします。
なお、このアプリケーションでは11個のイメージファイルを使用します。
![フォームのレイアウト](http://cz-cdn.shoeisha.jp/static/images/article/7650/7650_05a.gif)
コントロールの配置と設定
ここではC1RadialMenuコントロールの設定がメインになります。
① ツールボックスからTextBoxコントロールをフォームにドラッグ&ドロップし、Multiline/Scrollbars/Dockプロパティを設定します。そして、MouseDoubleClickイベントハンドラを作成します。
② ツールボックスからC1RadialMenuコントロールをドラッグ&ドロップします。フォームの外に配置されます。
③ プロパティウィンドウで「Items」プロパティをクリックし、RadialMenuItemBaseコレクションエディターを起動します。
④ 「追加」ボタンを6回クリックし、RadialMenuItemオブジェクトを6つ追加します。
⑤ 6つのRadialMenuItemオブジェクトの、TextプロパティとImageプロパティを次のように設定します。
オブジェクト | Text | Image(png) |
---|---|---|
RadialMenuItem1 | DVD | BurnCD |
RadialMenuItem2 | デジカメ | Camera |
RadialMenuItem3 | 文房具 | cut |
RadialMenuItem4 | データ保存 | emd |
RadialMenuItem5 | 日記 | Journal |
RadialMenuItem6 | 次へ | Folder_Open |
⑥ 「RadialMenuItem6」のItemsプロパティをクリックします。RadialMenuItemBaseコレクションエディターがもう一つ起動しますので、同じように「追加」ボタンを4回クリックし、RadialMenuItemオブジェクトを4つ追加します。これがサブメニューになります。
オブジェクト | Text | Image(png) |
---|---|---|
RadialMenuItem7 | 設定 | batfile |
RadialMenuItem8 | 接続 | Connection_Manager |
RadialMenuItem9 | ゲーム | gamecontroller |
RadialMenuItem10 | 印刷 | Printer |
⑦ 設定が終わったらRadialMenuItemBaseコレクションエディターを閉じ、C1RadialMenuコントロールのプロパティウィンドウに戻ります。
そして、Imageプロパティに「AutoRun.png」を設定します。
⑧ フォームのMouseDoubleClickイベントハンドラに、C1RadialMenuコントロールを表示するコードを作成します。
メニューの表示はShowMenuメソッドを実行しますが、表示位置をフォームの右下に来るように設定します。
Private Sub TextBox1_MouseDoubleClick(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDoubleClick Dim pt As Point = New Point(Me.Location.X + Me.Width, Me.Location.Y + Me.Height) C1RadialMenu1.ShowMenu(Me, pt) End Sub
private void textBox1_MouseDoubleClick(object sender, MouseEventArgs e) { Point pt = new Point(this.Location.X + this.Width, this.Location.Y + this.Height); c1RadialMenu1.ShowMenu(this, pt); }
⑨ アプリケーションを実行し、TextBoxコントロールをダブルクリックしてC1RadialMenuコントロールが表示されることを確認します。
また、「次へ」の▲ボタンをクリックし、サブメニューが表示されることを確認します。←ボタンをクリックするとサブメニューが閉じ、元のメニュー表示に戻ります。
メニューが選択された時の処理
最後に、メニューが選択された時の処理を作成します。
C1RadialMenuコントロールでメニューアイテムが選択されると、ItemClickイベントが発生しますので、このイベントハンドラで処理を実行します。
どのメニューアイテムが選ばれたのかは、イベントハンドラの引数eからRadialMenuItemオブジェクトを取得し、Textプロパティを参照することで分かります。
ここでは、メッセージボックスを表示する処理を実行します。
Private Sub C1RadialMenu1_ItemClick(sender As System.Object, e As C1.Win.C1Command.RadialMenuItemClickEventArgs) Handles C1RadialMenu1.ItemClick If e.RadialMenuItem.Name = "RadialMenuItem1" Then MessageBox.Show(e.RadialMenuItem.Text + "が選択されました", "選択されたメニュー") End If End Sub
private void c1RadialMenu1_ItemClick(object sender, C1.Win.C1Command.RadialMenuItemClickEventArgs e) { if (e.RadialMenuItem.Name == "radialMenuItem1") { MessageBox.Show(e.RadialMenuItem.Text + "が選択されました", "選択されたメニュー"); } }
まとめ
C1RadialMenuコントロールは、とてもユニークなコンテキストメニューを提供するコンポーネントです。グラフィカルなフォームを使ったアプリケーションや、標準的なメニューではデザインが崩れてしまうアプリケーションなどでは、デザイン性の高いコンテキストメニューを提供してくれるコントロールと言えます。