SHOEISHA iD

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

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

ComponentZine(ComponentOne)

ラベル表示にHTMLタグを使った.NETアプリケーションの作成

ComponentOne Studio 2010JのC1SuperLabelコンポーネントを使ったアプリケーションの作成

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

 SuperToolTip for Windows Formsの「C1SuperLabel」コンポーネントは、データの表示にHTMLタグを使用することができるコントロールです。今回は、このC1SuperLabelコンポーネントを使い、装飾を施したラベルとツールヒントを表示するアプリケーションを作成してみました。

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

はじめに

 入力コントロールの見出しや入力データの表示などに普段使用している標準コントロール「Label」は、せいぜい文字色や背景色を変える程度しか装飾できません。しかし、このLabelコントロールをもっと華麗に装飾できれば、プログラムの表現力もぐっと向上するはずです。

 SuperToolTip for Windows Formsの「C1SuperLabel」コンポーネントは、データの表示にHTMLタグを使用できるコントロールです。文字の装飾だけでなく、テーブルや箇条書きの番号・記号、画像など、HTMLページとほぼ同様の内容を表示する機能を備えています。

 今回は、このSuperToolTip for Windows FormsのC1SuperLabelコンポーネントを使い、装飾を施したラベルを表示するとともに、テキストボックスに入力した文字列をHTMLタグで装飾してコンポーネントで表示するアプリケーションを作成してみました。

WebページのようにHTMLで記述したデータをラベルで表示できる
WebページのようにHTMLで記述したデータをラベルで表示できる

対象読者

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

必要な環境

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

プログラム実行時の注意事項

 SuperToolTip for Windows Formsを使って作成したアプリケーションを配布する場合、SuperToolTip for Windows Formsのアセンブリファイルを添付する必要があります。アプリケーションを正常に動作させるためには、次のファイルをインストールしてください。

ファイル 内容
C1.Win.C1SuperTooltip.2.dll C1SuperTooltip コントロール(Visual Studio 2005/2008 用)

 このファイルを、プログラムを実行するフォルダへフォルダ構成を変えずに格納します。

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

 はじめてSuperToolTip for Windows Formsコンポーネントを使用する方は、Visual Studio、Visual Basic、Visual C#の開発環境に、ComponentOne Studio Enterprise 2010Jをインストールする必要があります。

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

コントロールの追加

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

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

C1SuperLabelコンポーネントについて

 SuperToolTip for  Windows Formsは、C1SuperLabelとC1SuperTooltipの2つのコンポーネントを持つライブラリです。

 C1SuperLabelは標準のLabelコントロールに似ていますが、プレーンなテキストだけでなくHTMLタグで記述されたコンテンツを表示できるため、作成するアプリケーションの見た目をぐっと良くすることができます。

 また、すべてC#で記述された独自の軽量HTMLパーサー、およびレンダラーを備えているので、Internet Explorerを使用せずにHTMLコンテンツを表示します。

SuperToolTip for .NETの機能

 C1SuperLabelとC1SuperTooltipコンポーネントでは、プレーンテキスト以外に次の項目を作成できます。

  • ネストされた<div>要素
  • <span>タグを使用した異なるフォントおよびテキスト色
  • <pre>タグを使用した書式設定済みテキスト
  • 段落の配置
  • テーブルの書式設定、テーブルのネスト、行および列の結合
  • リストのネスト、箇条書きリスト、番号付きリスト
  • アプリケーションリソースから読み込んだ画像
  • カスケードスタイルシート(<style>タグ)
C1SuperLabelとC1SuperTooltipで表示できるHTMLコンテンツの例(※ヘルプファイルより抜粋)
「C1SuperLabel」と「C1SuperTooltip」で表示できるHTMLコンテンツの例(※ヘルプファイルより抜粋)

サポートしないタグ一覧

 C1SuperTooltipとC1SuperLabelコンポーネントでサポートされないタグは、次のとおりです。

使用できないタグ
<APPLET> <area> <base>
<basefont> <bdo> <button>
<caption> <colgroup> <fieldset>
<form> <frameset> <head>
<HTML> <iframe> <input>
<isindex> <label> <legend>
<map> <noframes> <noscript>
<object> <optgroup> <option>
<param> <select> <sub>
<sup> <thead> <tfoot>
<tbody> <textarea> <th>
<title>    
※注 -ヘルプファイルより

確認したHTMLのバージョンは4.01(HTML4.01仕様)です。これ以外のバージョンはサポート対象となりませんので、注意してください。

C1SuperLabelコンポーネントへのHTMLコンテンツの設定方法

 C1SuperTooltipとC1SuperLabelコンポーネントにHTMLコンテンツを設定するには、それぞれ専用のエディタを使用します。

 今回利用するC1SuperLabelコンポーネントの場合、スマートタグまたはプロパティウィンドウでTextプロパティをクリックすると、「C1SuperLabelエディタ」が起動します。このエディタの左側のペインに、HTML書式のデータを記述します。

C1SuperLabelエディタ
C1SuperLabelエディタ

 直接入力してもかまいませんし、HTMLエディタで作成したHTML文をコピー&ペーストすることもできます。HTMLエディタを使った方が、完成後のイメージを確認しながら作成できるので便利だと思います。

 今回のプログラムでは、HTMLエディタでコンテンツを作成し、HTML文をペーストしました。なお、HTMLエディタからペーストする際は、すべてのHTML文字列を1行にまとめる必要があります。途中で改行が入ってしまうと、そこでペースト文字列が途切れてしまうため、注意が必要です。

FrontPageでデータをHTML化
FrontPageでデータをHTML化

使用可能な画像フォーマット

 C1SuperTooltip/C1SuperLabelコンポーネントどちらも、次のフォーマットの画像を挿入できます。

フォーマット ファイルの拡張子
ビットマップ bmp
DIビットマップ dib
アイコン ico
カーソル cur
GIF(アニメーションGIFは非対応) gif
JPEG jpg
Windowsメタファイル wmf
エンハンスドメタファイル emf
Portable Network Graphics png

プログラムの作成

 では、さっそくフォームをデザインしていきます。今回のプログラムでは、C1SuperLabelコンポーネントでテーブルと画像を表示させます。

 また、TextBoxコントロールに入力された文字列をHTMLタグ付きの文字列に加工し、C1SuperLabelコンポーネントで表示する機能も持たせます。加工されたHTML文は、標準コントロールのLabelコントロールを使って表示します。

 HTML化の処理は、文字色の設定とマーカーの付加です。文字色の設定には、色のダイアログボックスを使います。 

フォームのデザイン

 フォームは、次のように作成します。色のダイアログボックスを表示する2つのボタンには、画像ファイル「ColorHS.png」を設定しています。

作成するフォーム
作成するフォーム

画面上部のC1SuperLabelコンポーネントの設定

 画面上部のC1SuperLabelコンポーネントには、テーブルと装飾したテキスト、GIFフォーマットの画像を表示します。

画面上部のC1SuperLabelコンポーネントの表示
最初のC1SuperLabelコンポーネントの表示

 C1SuperLabelエディタに入力したHTML文は次のとおりです。下のコードは、HTMLの設定が分かるように改行とインデントを付けていますが、実際にC1SuperLabelコンポーネントに設定する際は1行の文字列にしておきます。

画面上部のC1SuperLabelコンポーネントに設定したHTML文
<p><font color="#800080">これは、HTMLで装飾したデータです。</font></p>
<p><span style="background-color: #FFFF00">おでんの具ベスト3</span></p>
<table border="0" width="223" height="89">
	<tr>
		<td width="107" height="83">
			<table border="1" width="107">
				<table border="1" width="107">  
					<tr>
						<td width="13" bgcolor="#00FFFF">1</td>    
						<td width="79" bgcolor="#00FFFF">たまご</td>
					</tr>
					<tr>
					    <td width="13" bgcolor="#008080">
					    	<font color="#FFFFFF">2</font>
					    </td>
					    <td width="79" bgcolor="#008080">
					    	<font color="#FFFFFF">はんぺん</font>
					    </td>
					</tr>
					<tr>
					    <td width="13" bgcolor="#0000FF">
					    	<font color="#FFFF00">3</font>
					    </td>
					    <td width="79" bgcolor="#0000FF">
					    	<font color="#FFFF00">ちくわ</font>
					    </td>
					</tr>
				</table>
			</td>
			<td width="100" height="83">
				<img border="0" src="nabe.GIF" width="88" height="74">
			</td>
		</tr>
	</table>
<br>

 テーブルのネストで、データのリスト表示と画像「nabe.GIF」を並べて表示しています。このGIFファイルは、プログラムの実行ファイルと同一フォルダ内に格納しています(※注)。

※注

C1SuperLabelエディタ上では、GIF画像が表示されないので注意してください。

画面下部のC1SuperLabelコンポーネントの処理

 画面下部のC1SuperLabelコンポーネントでは、[実行]ボタンを押すと、TextBoxコントロールに入力された文字列をHTML文に加工し、C1SuperLabelコンポーネントで表示します。

 C1SuperLabelコンポーネントには、あらかじめフォーム表示時に「ここにHTMLで装飾された文字が表示されます。」という文字をHTMLで装飾して表示するように、TextプロパティにHTMLタグ付きの文字列を設定しておきます。

<br><p align="center"><b><font color="#FF00FF">ここにHTMLで装飾された文字が表示されます。</font></b><br><p align="center"><b>

文字色を設定するボタンの処理

 最初に、文字色を設定するボタンの処理を作成します。ボタン押下時に、テキストボックスに入力された文字に色を設定するダイアログボックスを表示し、設定完了後、HTML文を自動生成するようにします。

 ColorDialogコントロールは、ユーザーが選んだ色をColor構造体のメンバで返します。しかし、HTMLには<font color="#800080">のように色を16進数の文字列で設定する必要があります。そのため、ColorTranslatorクラスの「ToHtml」メソッドを利用します。「ToHtml」メソッドは、指定したColor構造体をHTMLカラーの文字列形式に変換してくれるメソッドです。これを使って16進数の文字列表記に変換し、<font>タグと組み合わせて文字色の指定を作成します。

Visual Basic
Public Class Form1
    Private ccolor As String
    Private marker As String
    Private str_html As String
    Private marker_col As String = "#FFFF00"

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.ColorDialog1.ShowDialog()

        Me.Label1.BackColor = Me.ColorDialog1.Color
        ccolor = ColorTranslator.ToHtml(Me.ColorDialog1.Color)

        ccolor = "<font color='" + ccolor + " '" + ">"
    End Sub
C#
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private string ccolor, marker, str_html;
    private string marker_col= "#FFFF00";

    private void button1_Click(object sender, EventArgs e)
    {
        colorDialog1.ShowDialog();

        label1.BackColor = colorDialog1.Color;
        ccolor = ColorTranslator.ToHtml(colorDialog1.Color);

        ccolor = "<font color='" + ccolor + " '" + ">";
    }

マーカー色を設定するボタンの処理

 マーカー色を設定するボタンの処理も同様で、色のダイアログボックスを表示して選択してもらったColor構造体のメンバを、16進数表記の文字列に変換します。ただし、作成するのはここまでであとは[実行]ボタンで処理します。

Visual Basic
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Me.ColorDialog1.ShowDialog()

    Me.Label2.BackColor = Me.ColorDialog1.Color
    marker_col = ccolor = ColorTranslator.ToHtml(Me.ColorDialog1.Color)
End Sub
C#
private void button2_Click(object sender, EventArgs e)
{
    colorDialog1.ShowDialog();

    label2.BackColor = colorDialog1.Color;
    marker_col = ColorTranslator.ToHtml(colorDialog1.Color);
}

[実行]ボタンの処理

 このボタンで、最終的にHTML文を作成し、画面下部のC1SuperLabelコンポーネントに設定します。

 まず、CheckBoxコントロールがチェックされているかどうかを調べ、チェックされていればマーカー色を設定するボタンの処理で取得した色情報の16進数表記を使って、<span style="background-color: #FFFF00">というHTMLタグを生成します。

 そして、TextBoxコントロールの入力文字列と文字色の設定を行うHTML文をすべて結合し、1行のHTML文にして2番目のC1SuperLabelコンポーネントのTextプロパティに設定します。

 あわせて、同じHTML文をLabelコントロールにも出力し、作成したHTML文の内容を確認できるようにして、できあがりです。

Visual Basic
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        If Me.CheckBox1.Checked Then
            marker = "<span style='background-color:" + marker_col + "'>"
        Else
            marker = ""
        End If

        str_html = "<p>" + marker + ccolor + Me.TextBox1.Text + "</font></span></p>"

        Me.C1SuperLabel2.Text = str_html
        Me.Label3.Text = str_html
    End Sub
End Class
C#
private void button3_Click(object sender, EventArgs e)
{
    if(checkBox1.Checked){
        marker = "<span style='background-color:" + marker_col + "'>";
    }else{
        marker = "";
    }
     str_html = "<p>" + marker + ccolor + textBox1.Text + "</font></span></p>";

    c1SuperLabel2.Text = str_html;
    label3.Text = str_html;
}

まとめ

 たかがラベルと言えども、HTMLタグを使ってWebページのようなデザイン/レイアウトができれば、フォームの可読性や作業効率が大きく改善します。

 デザインの自由度が高くなり、ビジュアル面でも各段に向上するので、LabelやPictureBoxなどを使ったフォームのデザインに苦労した経験があれば、ぜひC1SuperLabelコンポーネントを使うことをお勧めします。

製品情報

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5132 2010/04/26 14:00

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング