SHOEISHA iD

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

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

ComponentZine(ComponentOne)

HTMLを表示できるラベルを持った.NETアプリケーションの作成

ComponentOne Studio SuperToolTip for.NETのC1SuperLabelコントロールを使ったアプリケーションの作成

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

 今回は、ComponentOne Studio SuperToolTip for.NETの「C1SuperLabelコントロール」を取り上げます。このコントロールを使用すると、プレーンテキストではなく、HTMLでコーディングされた情報を表示でき、アプリケーションを一層リッチに拡張できます。

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

はじめに

 Windowsフォームで、文字列表示に頻繁に使われているLabelコントロールですが、せいぜいフォントと文字色を変えるぐらいしか機能がありません。もっといろいろな形式で表示できればいいのに、と思ったことはありませんか。

 ComponentOne Studio SuperToolTip for.NETに含まれているC1SuperLabelコントロールを使用すると、プレーンテキストではなくHTMLでコーディングされた情報を表示でき、アプリケーションを一層表現力豊かに拡張できます。Microsoft Internet Explorer(以下、IE)に依存しない独自の軽量HTMLパーサーとレンダラーを使用してHTMLコンテンツを表示します。テーブル、リスト、ハイパーリンク、画像表示などのほとんどのHTML機能をサポートしており、さらにCSSにも対応しているため、Webページ並のラベルを作成できます。

 今回は、このC1SuperLabelコントロールを使用して、Windowsアクセサリを起動する簡単なソフトウェアラウンチャーを作成してみました。

フォーム全面に表示したC1SuperLabelコントロールにHTMLで情報を記述
フォーム全面に表示したC1SuperLabelコントロールにHTMLで情報を記述
プレビュー機能を持つ専用のエディタで、HTMLを簡単に記述できる
プレビュー機能を持つ専用のエディタで、HTMLを簡単に記述できる

対象読者

 Visual Basic、Visual C# 2005/2008/2010を使ってプログラムを作ったことのある人

必要な環境

 Visual Basic 2005/2008/2010、Visual C# 2005/2008/2010、Visual Studio 2005/2008/2010でプログラムが作れる環境。なお、本プログラムはWindows Vista上で動作するVisual Studio 2010を使用して作成し、動作確認を行っています。

※サンプルソース実行時の注意点

 本プログラムは、Windowsのアクセサリを呼び出している関係で、exeファイルへのパスが「e:\Windows\System32」になっているため、実行ファイル(バイナリファイル)はアップロードしていません。プログラムを実行させる場合は、ソースコード圧縮ファイルを解凍したのちに、それぞれのexeファイルへのパスをプログラムを実行させるコンピュータにあわせて書き換えてください

 今回は、パス名がコンピュータ固有のものとなるため、サンプルにバイナリファイルは含まれていません。

コンポーネントのインストール

 この記事の手順を試すには、Visual Studio、Visual Basic、Visual C#の開発環境にComponentOne Studio Enterpriseをインストールする必要があります。インストーラは、グレープシティのWebページからダウンロードできます。

 製品ページの[申込フォーム]をクリックし、グレープシティのWebサイトへ必要情報を登録すると、添付トライアルライセンスキーファイルとダウンロードサイトを記載したE-Mailが送られてきますので、ここからダウンロードします。制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。

コントロールの追加

 ComponentOne Studio Enterpriseをインストールしたら、ツールボックスに専用のタブを作成し、使用するコンポーネントを追加します。追加するコンポーネントは、アセンブリ名が「C1.Win.C1SuperTooltip」(※注意)の「C1SuperLabel」コントロールです。

アセンブリ名が「C1.Win.C1SuperTooltip」の「C1SuperLabel」コントロールを選択する
アセンブリ名が「C1.Win.C1SuperTooltip」の「C1SuperLabel」コントロールを選択する
※注意

 「C1.Win.C1SuperTooltip.4」は.NET Framework 4でのみ使用できます。

C1SuperLabelコントロールについて

 C1SuperLabelコントロールは、IEに依存しない(※注意)独自の軽量HTMLパーサーおよびレンダラーを使用して、HTMLコンテンツを表示するコンポーネントです。このレンダラーは、CSS、テーブル、画像、リストなどのほとんどのHTML機能をサポートします。

※注意

 IEに依存していないため、画像のフィルタなどIE独自の拡張機能には対応していません。

専用のエディタを持っている

 C1SuperLabelコントロールにコンテンツを記述するには、Labelコントロールと同様Textプロパティを使用しますが、プロパティウィンドウでTextプロパティの値欄にある[...]ボタンをクリックすると、専用のエディタが起動します(※注意)。基本的にはこのエディタはテキストエディタで、タグ打ちでHTMLコードを入力していきますが、コピー&ペーストやリスト、画像挿入などいくつかの機能はツールバーのボタンに組み込まれています。

 また、エディタの横にはプレビューウィンドウがあり、入力した直後からできあがりの状態を確認できます。

プレビュー機能を持つ専用のエディタで、HTMLを簡単に記述できる
プレビュー機能を持つ専用のエディタで、HTMLを簡単に記述できる
※注意

 専用エディタの起動は、右上隅にあるスマートタグ(画像参照)をクリックし、[C1SuperLabel タスク]メニューから[ラベルの編集...]を選択するという方法でも可能です。


右上の矢印をクリックし、[ラベルの編集...]を選択
右上の矢印をクリックし、[ラベルの編集...]を選択

標準のHTMLタグが使用可能

 C1SuperLabelコントロールでは、標準のHTMLで使用できるHTMLタグが使用できるため、テーブルや箇条書きリスト、画像の挿入などが可能です。また、<div><span>タグが使えるので、コンテンツのネストや文字列中の文字を異なるフォントや文字色で装飾することが可能です。

 さらにCSSに対応しているため、Style要素を使用してコンテンツを装飾できます。

<div>タグでコンテンツのネストが可能(ヘルプから抜粋)
<div>タグでコンテンツのネストが可能(ヘルプから抜粋)
HTMLタグの使用例(ヘルプから抜粋)
HTMLタグの使用例(ヘルプから抜粋)

 ただし、Frame、IFrame、Form、Inputなど一部のタグは使用できないため注意してください。

C1SuperLabelコントロールでサポートされないタグ
APPLET
AREA
BASE
BASEFONT
BDO
BUTTON
CAPTION
COL
COLGROUP
FIELDSET
FORM
FRAME
FRAMESET
HEAD
HTML
IFRAME
INPUT
LABEL
LEGEND
MAP
NOFRAMES
NOSCRIPT
OBJECT
OPTGROUP
OPTION
PARAM
SELECT
SUB
SUP
THEAD
TBODY
TFOOT
TEXTAREA
TH
TITLE

フォームの作成

 では、さっそくC1SuperLabelコントロールを使ってプログラムを作成しましょう。

GUIのデザイン

 フォームには、C1SuperLabel、ComboBox、Buttonの3つのコントロールを配置し、FormBorderStyleプロパティを「Fixed3D」に設定しておきます。

 C1SuperLabelコントロールは、Dockプロパティを「Fill」にしてフォームいっぱいに広げます。そして、その上に設定したドロップダウンリストにComboBoxコントロールを、その下にButtonコントロールを配置します。

コントロールのレイアウト
コントロールのレイアウト

C1SuperLabelコントロールの作成

 フォーム画面のメインはC1SuperLabelコントロールで占めています。では、このHTMLコンテンツを作成していきます。

 まず、ツールボックスからC1SuperLabelコントロールのアイコンをフォームにドラッグ&ドロップし、Dockプロパティを「Fill」にします。プロパティウィンドウのTextプロパティの値欄にある[...]ボタンを押し、エディタを起動します。エディタには、デフォルトでコントロール名が記述されています。

エディタを起動する
エディタを起動する

 デフォルトのコントロール名を削除し、タイトルと最初のボックスのHTML文を記述していきます。HTMLを記述していくそばから、プレビューウィンドウにその結果が表示されます。なお、エディタはサイズを自由に変更でき、プレビューとの境界線もドラッグで移動できるため、見やすい大きさに広げて作業を行います。

<body><br>
	<div align="center">お手軽プログラムラウンチャー</div>
	<div style="background-color:deepskyblue;border:solid thin olive;margin:10px;padding:10px">

	 <div align="center" >メニュー<br>
	   </div><br>
	<br><br>
	<br>
	<br>
	</div><br><br>

 ツールバーの[Insert Image]ボタンを押します。画像選択のダイアログが表示されるので、挿入したい画像を選びます。

<img src='ring-8.gif'><br>
<br>

 箇条書きとテーブルを入力します。これらは、そのままタグ打ちで入力します。

	<div style="margin:20px; Color:White" >使用方法
	<ol>
	  <li>ドロップダウンリストからアプリを選びます。</li>
	  <li>「起動」ボタンをクリックします</li></div>
	</ol><br>
	<br>
	<table border="1" width="200" align="center">
	  <tr>
	    <td width="60"> Ver1.00.00</td>
	    <td width="144">Copyright seto.haruka </td>
	  </tr>
	</table>
</body>

 [OK]ボタンを押してエディタを閉じ、プロパティウィンドウで[BackgroundImage]をクリックします。ダイアログから「grad_blue.jpg」を選択すると、C1SuperLabelコントロールの背景に、グラデーションの画像が設定されます。

完成したC1SuperLabelコントロール
完成したC1SuperLabelコントロール

ComboBox、Buttonコントロールの設定

 C1SuperLabelコントロールの作成が終わったら、C1SuperLabelコントロールのボックス内にComboBoxコントロールとButtonコントロールを配置します。ButtonコントロールはTextプロパティを「起動」に変えます。

 ComboBoxコントロールは、「DropDownStyle」プロパティを「DropDownList」に変え、以下の項目をリストに設定します。

  • 電卓
  • メモ帳
  • ペイント
  • ワードパッド

 ButtonコントロールのClickイベントハンドラで、選択したアクセサリを起動する処理を設定します。これは、ProcessクラスのStartメソッドを使用して作成できます。StartInfoクラスのFileNameプロパティに起動するアクセサリのフルパス名を記述し、Startメソッドを実行します。そのため、System.Diagnostics名前空間への参照を設定してください。

 なお、このコードのパス名は筆者のWindowsのインストールフォルダになっているため、プログラムを実行する場合は自身のディレクトリ名に書き換えてください。

Visual Basic
Imports System.Diagnostics

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ps As Process = New Process()
        Select Case Me.ComboBox1.Text

            Case "電卓"
                ps.StartInfo.FileName = "e:\Windows\System32\calc.exe"
            Case "メモ帳"
                ps.StartInfo.FileName = "e:\Windows\System32\notepad.exe"
            Case "ペイント"
                ps.StartInfo.FileName = "e:\Windows\System32\mspaint.exe"
            Case "ワードパッド"
                ps.StartInfo.FileName = "E:\Program Files\Windows NT\Accessories\wordpad.exe"
        End Select

        ps.Start()
    End Sub

End Class
C#
using System.Diagnostics;

namespace mysuperlabel_cs
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Process ps = new Process();
            switch(comboBox1.Text)
            {
                case "電卓":
                    ps.StartInfo.FileName = "e:/Windows/System32/calc.exe";
                    break;
                case "メモ帳":
                    ps.StartInfo.FileName = "e:/Windows/System32/notepad.exe";
                    break;
                case "ペイント":
                    ps.StartInfo.FileName = "e:/Windows/System32/mspaint.exe";
                    break;
                case "ワードパッド":
                    ps.StartInfo.FileName = "E:/Program Files/Windows NT/Accessories/wordpad.exe";
                    break;
            }
            ps.Start();
        }
    }
}

まとめ

 ラベルにHTMLが使えると、文字列の表現がぐっと広がるだけでなく、いろいろな様式で表現できるようになります。

 C1SuperLabelコントロールには、タグ打ちのエディタが装備されていますが、エディタにはコピー&ペーストの機能も持っているため、他のエディタで作成したHTML文をペーストして使うこともできます。

 標準のLabelコントロールでのフォームのデザインに満足されてない方は、ぜひ使ってみてはいかがでしょうか。

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6051 2011/10/13 16:26

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング