SHOEISHA iD

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

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

ComponentZine(ComponentOne)

縮小・展開するトピックバーを持った.NETアプリケーションの作成

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

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

GUIの作成 2

サブフォーム「Form2」の作成

 プロジェクトにWindowsフォームを追加し、C1Calendarコントロールを配置します。

 ① フォームにC1Calendarコントロールをドラッグ&ドロップし、Dockプロパティを「Fill」にします。

Dockプロパティを「Fill」にする
Dockプロパティを「Fill」にする

 ② フローティングツールバーから「カレンダー数および親のC1Scheduleコントロールの設定」をクリックし、「カレンダーの数」を「3」にします。

「カレンダー数および親のC1Scheduleコントロールの設定」をクリック
「カレンダー数および親のC1Scheduleコントロールの設定」をクリック
「カレンダーの数」を「3」に設定
「カレンダーの数」を「3」に設定

 ③ フローティングツールバーにある「外観オプションの設定」をクリックします。

 「C1Calender1-表示スタイル」というダイアログが表示されますので、次の設定を行います。

設定項目 設定値
スタイル Aero
フォントの色
フォント S UI Gothic, 9.75pt
共通-日-週末フォントの色 Maroon
「外観オプションの設定」をクリック
「外観オプションの設定」をクリック
「C1Calender1-表示スタイル」を設定
「C1Calender1-表示スタイル」を設定

 これで出来上がりです。

完成したForm2
完成したForm2

アプリケーションの実行処理の作成

 フォームのデザインが出来上がったら、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をいくつも表示させることができます。

Visual Basic
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
C#
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つのウィンドウで切り替えて表示するなど、使い方次第で高い操作性をユーザーに提供してくれます。

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

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

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7775 2014/05/16 17:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング