GcDropDownButtonコントロールの設定
GcDropDownButton コントロールは、コンテキストメニューをドロップダウンで表示する機能を搭載した拡張ボタンコントロールです。
ドロップダウンリストにメニューを追加するには、フォームデザイナではContextMenuStripコントロールにメニューを追加します。GcDropDownButtonコントロールの「DropDown」プロパティには、このContextMenuStripコントロールのオブジェクト名が設定されています。そのため、自動的にContextMenuStripコントロールのメニュー項目が、GcDropDownButtonコントロールのドロップダウンリストに設定されるようになります。
ドロップダウンリストの設定
このプログラムでは、ContextMenuStripコントロールに次の2つのメニューを設定します。
設定したメニュー項目は、GcDropDownButtonコントロールのスマートタグから「ドロップダウン項目」を選ぶと表示される「項目コレクションエディタ」で編集できます。
ここでは、2つのメニュー項目にそれぞれアイコンファイルとJPEGファイルを設定し、セパレータを追加しています。
メニュー項目 | Image設定値 |
---|---|
開くToolStripMenuItem | folderopen.ico |
閉じるToolStripMenuItem | close.jpg |
これらは、ContextMenuStripコントロールのプロパティからも設定できます。
ドロップダウンリストが選択された処理
ドロップダウンリストの各項目が選択された処理は、VBのフォームデザイン時であれば各ToolStripMenuItemオブジェクトのClickイベントハンドラに記述できます。
ここでは、「開く」メニューを選ぶとファイルを開くダイアログボックスを表示し、選んだテキストファイルをリッチテキストボックスで表示するようにします。また、「閉じる」ボタンを選ぶとリッチテキストボックスを空にします。
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ステートメントを使って処理を振り分けます。
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コントロールに追加します。この処理は、メニュー「開く」のイベントハンドラに組み込みます。
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
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イベントハンドラに作成します。
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
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; } }