SHOEISHA iD

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

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

ComponentZine(PlusPak)

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

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

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

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;
    } 
}

次のページ
フォームをドラッグして移動させる処理

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

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

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3756 2009/03/26 18:10

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング