CodeZine(コードジン)

特集ページ一覧

ドロップダウンリストボタンを使った.NETアプリケーションを作る

PlusPak for Windows Forms 5.0JのGcDropDownButtonコントロールを使ったアプリケーションの作成

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/03/24 14:00
目次

GcDropDownButtonコントロールの設定

 GcDropDownButton コントロールは、コンテキストメニューをドロップダウンで表示する機能を搭載した拡張ボタンコントロールです。

 ドロップダウンリストにメニューを追加するには、フォームデザイナではContextMenuStripコントロールにメニューを追加します。GcDropDownButtonコントロールの「DropDown」プロパティには、このContextMenuStripコントロールのオブジェクト名が設定されています。そのため、自動的にContextMenuStripコントロールのメニュー項目が、GcDropDownButtonコントロールのドロップダウンリストに設定されるようになります。

ドロップダウンリストの設定

 このプログラムでは、ContextMenuStripコントロールに次の2つのメニューを設定します。

設定するメニュー
設定するメニュー

 設定したメニュー項目は、GcDropDownButtonコントロールのスマートタグから「ドロップダウン項目」を選ぶと表示される「項目コレクションエディタ」で編集できます。

「ドロップダウン項目」を選ぶ
「ドロップダウン項目」を選ぶ
項目コレクションエディタ
項目コレクションエディタ

 ここでは、2つのメニュー項目にそれぞれアイコンファイルとJPEGファイルを設定し、セパレータを追加しています。

OpenFileDialog1
メニュー項目 Image設定値
開くToolStripMenuItem folderopen.ico
閉じるToolStripMenuItem close.jpg

 これらは、ContextMenuStripコントロールのプロパティからも設定できます。

できあがったドロップダウンリスト
できあがったドロップダウンリスト

ドロップダウンリストが選択された処理

 ドロップダウンリストの各項目が選択された処理は、VBのフォームデザイン時であれば各ToolStripMenuItemオブジェクトのClickイベントハンドラに記述できます。

 ここでは、「開く」メニューを選ぶとファイルを開くダイアログボックスを表示し、選んだテキストファイルをリッチテキストボックスで表示するようにします。また、「閉じる」ボタンを選ぶとリッチテキストボックスを空にします。

Visual Basic
Private Sub 開くToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 開くToolStripMenuItem.Click
    Dim fname As String
    Me.OpenFileDialog1.ShowDialog()
    fname = Me.OpenFileDialog1.FileName

    Me.RichTextBox1.LoadFile(fname, RichTextBoxStreamType.PlainText)
    Me.Label1.Text = fname

End Sub

Private Sub 閉じるToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 閉じるToolStripMenuItem.Click
    Me.RichTextBox1.Text = ""
    Me.Label1.Text = ""
End Sub

 C#では、GcDropDownButtonコントロールのDropDownItemClickedイベントハンドラを利用します。このイベントハンドラはVBでも利用可能です。

 イベントハンドラの引数「e」のClickedItemプロパティには、選択されたメニュー項目のオブジェクトへの参照が格納されています。Nameプロパティを使うとそのオブジェクト名を取得できますので、ここから選択されたメニューを識別して処理を組み立てます。「開く」「閉じる」メニューの各オブジェクトは、ToolStripMenuItemオブジェクトのオブジェクト名で識別されるので、switchステートメントを使って処理を振り分けます。

C#
private void gcDropDownButton1_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    switch (e.ClickedItem.Name)
    {
        case "開くToolStripMenuItem":
            String fname;
            openFileDialog1.ShowDialog();
            fname = openFileDialog1.FileName;

            richTextBox1.LoadFile(fname, RichTextBoxStreamType.PlainText);
            label1.Text = fname;
            break;
         case "閉じるToolStripMenuItem":
            richTextBox1.Text = "";
            label1.Text = "";
             break;
    } 

コードからドロップダウンリストを設定する

 一度開いたファイルの名前をメニューに組み込んでいくという、Windowsのアプリケーションではおなじみの処理をドロップダウンリストにも組み込んでみます。

 この処理はコードからリストを組み込むのですが、GcDropDownButton コントロールに組み込むのではなく、ContextMenuStripコントロールに項目を追加する形をとります。

 まず、ToolStripMenuItemクラスのインスタンスを作成し、Nameプロパティで名前を付けます。そして、このオブジェクトをContextMenuStripコントロールに追加します。この処理は、メニュー「開く」のイベントハンドラに組み込みます。

Visual Basic
Private Sub 開くToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 開くToolStripMenuItem.Click
	...
	...
	
    'リストの追加
    Dim additem1 As New System.Windows.Forms.ToolStripMenuItem(fname)
    additem1.Name = "additem"
    ContextMenuStrip1.Items.Add(additem1)
End Sub
C#
switch (e.ClickedItem.Name)
{
    case "開くToolStripMenuItem":
	...
	...

        //リストの追加
        ToolStripMenuItem additem1 = new ToolStripMenuItem(fname);
        additem1.Name = "additem";
        contextMenuStrip1.Items.Add(additem1);
        break;
開いたファイル名がメニューに組み込まれる
開いたファイル名がメニューに組み込まれる

追加したメニューがクリックされた時の処理

 コードから追加したメニューが選択された時の処理は、まず、Nameプロパティの値「additem」で識別し、イベントハンドラの引数「e」のClickedItemプロパティからTextプロパティを参照して、メニューの項目名を取得します。ここから開くファイル名をフルパスで取得し、リッチテキストボックスのLoadFileメソッドに渡せば、ファイルを開くことができます。

 この処理は、Visual Basic・C#ともに、GcDropDownButtonコントロールのDropDownItemClickedイベントハンドラに作成します。

Visual Basic
Private Sub GcDropDownButton1_DropDownItemClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles GcDropDownButton1.DropDownItemClicked
    If e.ClickedItem.Name = "additem" Then
        Me.RichTextBox1.LoadFile(e.ClickedItem.Text, RichTextBoxStreamType.PlainText)
    End If
End Sub
C#
private void gcDropDownButton1_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    switch (e.ClickedItem.Name)
    {
        case "開くToolStripMenuItem":
			....
			....
            break;

        case "閉じるToolStripMenuItem":
			...
			...
			break;

        case "additem":
            richTextBox1.LoadFile(e.ClickedItem.Text, RichTextBoxStreamType.PlainText);
            break;
    } 
}

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:ComponentZine(PlusPak)

もっと読む

著者プロフィール

  • 瀬戸 遥(セト ハルカ)

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

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5