SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)

円形メニューを持った.NETアプリケーションの作成

ComponentOne Studioを活用したWindowsフォームアプリケーションの作成

  • X ポスト
  • このエントリーをはてなブックマークに追加

GUIの作成

 今回作成するアプリケーションは、TextBoxコントロールとC1RadialMenuコントロールを使用し、テキストボックスをダブルクリックするとC1RadialMenuコントロールがポップアップするようにします。

 C1RadialMenuコントロールは6つのメニューアイテムと4つのサブメニューを持ち、「DVD」メニューをクリックするとメッセージボックスを表示するようにします。

 なお、このアプリケーションでは11個のイメージファイルを使用します。

フォームのレイアウト
フォームのレイアウト
使用する11個のイメージファイル
使用する11個のイメージファイル

コントロールの配置と設定

 ここではC1RadialMenuコントロールの設定がメインになります。

 ① ツールボックスからTextBoxコントロールをフォームにドラッグ&ドロップし、Multiline/Scrollbars/Dockプロパティを設定します。そして、MouseDoubleClickイベントハンドラを作成します。

 ② ツールボックスからC1RadialMenuコントロールをドラッグ&ドロップします。フォームの外に配置されます。

 ③ プロパティウィンドウで「Items」プロパティをクリックし、RadialMenuItemBaseコレクションエディターを起動します。

RadialMenuItemBaseコレクションエディター
RadialMenuItemBaseコレクションエディター

 ④ 「追加」ボタンを6回クリックし、RadialMenuItemオブジェクトを6つ追加します。

RadialMenuItemオブジェクトを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メソッドを実行しますが、表示位置をフォームの右下に来るように設定します。

Visual Basic
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
C#
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コントロールが表示されることを確認する
C1RadialMenuコントロールが表示されることを確認する

 また、「次へ」の▲ボタンをクリックし、サブメニューが表示されることを確認します。←ボタンをクリックするとサブメニューが閉じ、元のメニュー表示に戻ります。

サブメニューの表示を確認する
サブメニューの表示を確認する

メニューが選択された時の処理

 最後に、メニューが選択された時の処理を作成します。

 C1RadialMenuコントロールでメニューアイテムが選択されると、ItemClickイベントが発生しますので、このイベントハンドラで処理を実行します。

 どのメニューアイテムが選ばれたのかは、イベントハンドラの引数eからRadialMenuItemオブジェクトを取得し、Textプロパティを参照することで分かります。

 ここでは、メッセージボックスを表示する処理を実行します。

Visual Basic
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
C#
private void c1RadialMenu1_ItemClick(object sender, C1.Win.C1Command.RadialMenuItemClickEventArgs e)
{
    if (e.RadialMenuItem.Name == "radialMenuItem1")
    {
        MessageBox.Show(e.RadialMenuItem.Text + "が選択されました", "選択されたメニュー");
    }
}

まとめ

 C1RadialMenuコントロールは、とてもユニークなコンテキストメニューを提供するコンポーネントです。グラフィカルなフォームを使ったアプリケーションや、標準的なメニューではデザインが崩れてしまうアプリケーションなどでは、デザイン性の高いコンテキストメニューを提供してくれるコントロールと言えます。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7650 2014/02/24 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング