GUIの作成 2
サブフォーム「Form2」の作成
プロジェクトにWindowsフォームを追加し、C1Calendarコントロールを配置します。
① フォームにC1Calendarコントロールをドラッグ&ドロップし、Dockプロパティを「Fill」にします。
② フローティングツールバーから「カレンダー数および親のC1Scheduleコントロールの設定」をクリックし、「カレンダーの数」を「3」にします。
③ フローティングツールバーにある「外観オプションの設定」をクリックします。
「C1Calender1-表示スタイル」というダイアログが表示されますので、次の設定を行います。
設定項目 | 設定値 |
---|---|
スタイル | Aero |
フォントの色 | 黒 |
フォント | S UI Gothic, 9.75pt |
共通-日-週末フォントの色 | Maroon |
これで出来上がりです。
アプリケーションの実行処理の作成
フォームのデザインが出来上がったら、PDF文書とWebページの表示、補助機能の実行コードを作成します。
まず、WebBrowserコントロールでPDF文書とWebページを表示する処理ですが、これはNavigateメソッドを使用します。引数に表示したいコンテンツのURLを設定するだけですが、ローカルファイルの場合は「"file://"」から始まるURLを記述します。WebサイトはそのままURLを記述します。
処理の分岐は、リンクアイテムのTagプロパティを利用します。イベントが発生すると、引数eのLink.TagプロパティにリンクアイテムのTagプロパティの値が格納されますので、この値をもとにどのリンクアイテムが選択されたのかを判断します。
次に、電卓やメモ帳などのWindowsアクセサリを実行させる処理ですが、まずSystem.EnvironmentクラスのSystemDirectoryメソッドを実行し、WindowsのSystem32フォルダのパスを取得します。そして、各アクセサリの実行ファイル名をつなぎ、ProcessクラスのStartメソッドを実行します。
カレンダーを設定したForm2の実行は、モードレスでフォルダを表示させるためにShowメソッドを使用します。
なお、VBの場合は単一のフォームが表示されますが、C#ではForm2のインスタンスを実行させますので、Form2をいくつも表示させることができます。
Public Class Form1 Private Sub C1TopicBar1_LinkClick(sender As System.Object, e As C1.Win.C1Command.C1TopicBarClickEventArgs) Handles C1TopicBar1.LinkClick Dim fname As String = "file://" + Application.StartupPath + "\data\" Dim winpath As String = System.Environment.SystemDirectory Dim flag As Boolean = False Select Case e.Link.Tag Case "a1" fname = fname + "P-0.pdf" flag = False Case "a2" fname += "P-1.pdf" flag = False Case "a3" fname += "P-2.pdf" flag = False Case "a4" fname = "http://c1.grapecity.com/SuperPages/whatsc1/" flag = False Case "b1" Process.Start(winpath + "\calc.exe") flag = True Case "b2" Form2.Show() flag = True Case "b3" Process.Start(winpath + "\notepad.exe") flag = True End Select If flag = False Then WebBrowser1.Navigate(fname) End If End Sub End Class
using System.Diagnostics; namespace TopicBar_Winform_cs { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void c1TopicBar1_LinkClick(object sender, C1.Win.C1Command.C1TopicBarClickEventArgs e) { String fname = "file://" + Application.StartupPath + "/data/" ; String winpath = System.Environment.SystemDirectory; Boolean flag = false; switch(e.Link.Tag.ToString()) { case "a1": fname = fname + "P-0.pdf"; flag = false; break; case "a2": fname += "P-1.pdf"; flag = false; break; case "a3": fname += "P-2.pdf"; flag = false; break; case "a4": fname = "http://c1.grapecity.com/SuperPages/whatsc1/"; flag = false; break; case "b1": Process.Start(winpath + "/calc.exe"); flag = true; break; case "b2": Form fm2 = new Form2(); fm2.Show(); flag = true; break; case "b3": Process.Start(winpath + "/notepad.exe"); flag = true; break; } if(flag == false) { webBrowser1.Navigate(fname); } } } }
まとめ
トピックバーは、今回のサンプルのように取扱説明書の目次として使ったり、種類の違う複数のコンテンツを1つのウィンドウで切り替えて表示するなど、使い方次第で高い操作性をユーザーに提供してくれます。