2012年10月19日金曜日

バージョン情報ダイアログに複数行の説明を表示する


VB.NET(VS2010)で作成したアプリケーションで、バージョン情報ダイアログを表示することになりました。
とりあえずデザインはどうでもいいのでw用意されているテンプレートを使います。

追加→Windowsフォーム→共通項目→Windows Forms→情報ボックス を選択
デフォルト名の AboutBox1.vb で[追加]

フォームをデザイナで開くとこんなのができてます。


マルチラインのテキストボックスのところに、

説明:
(ランタイムに、ラベルのテキストはアプリケーションのアセンブリ情報に置き換えられます。
プロジェクト デザイナーの[アプリケーション]ペインで、アプリケーションのアセンブリ情報をカスタマイズします。)

とあり、一応このフォームの説明のようです(しかし後述しますが、ここのテキストボックスに表示される項目の名前も「説明」なのでそのことを指して「説明:」と書いているのかも……よくわからないw)。
ここにある通り、特にコードを書かなくても、アセンブリ情報で設定した値を参照して表示するようになってます。
このフォームのコードをみると、フォームのLoadイベントで、アプリケーションのアセンブリ情報 My.Application.Info の各項目から、このフォームのタイトルや各ラベル・テキストボックスに値がセットされているのがわかります。

で、アセンブリ情報を見てみると、


デフォルトではこうなってます。
適当に空欄を埋めてから実行して AboutBox1 フォームを表示すると、こうなります。


アセンブリ情報にあってここには表示されていない項目もありますがそれはおいといて。
説明欄はマルチラインのテキストボックスです。せっかくなので複数行表示したいのですが、アセンブリ情報の「説明」には1行しか入力できません……。
で、またググったんですがw それらしいものがヒットせず。しかたないので自分で考えることにw

バージョン情報ダイアログに表示できさえすればいいのであれば、AboutBox1 のコードを修正し、当該テキストボックス(TextBoxDescription)のTextプロパティに固定値でもセットしてしまえばOKです。しかしなんか釈然としない……。

AboutBox1_Load のソースを見ると、テキストボックスに渡されている値は、My.Application.Info.Description であることがわかります。ということで、なんとなく "Description" で現在のプロジェクトを検索。それらしいのがヒットしました。

' アセンブリに関する一般情報は以下の属性セットをとおして制御されます。
' アセンブリに関連付けられている情報を変更するには、
' これらの属性値を変更してください。
' アセンブリ属性の値を確認します。
<Assembly: AssemblyTitle("WindowsApplication1")>
<Assembly: AssemblyDescription("説明ですよ")>
<Assembly: AssemblyCompany("会社ですよ")>
<Assembly: AssemblyProduct("WindowsApplication1")>
<Assembly: AssemblyCopyright("Copyright c  2012")>
<Assembly: AssemblyTrademark("商標ですよ")>

さっきアセンブリ情報に入力した値がここ AssemblyInfo.vb に出ています。
この AssemblyDescription の "説明ですよ" のところに複数行の内容を書けば、My.Application.Info.Description にも反映されるのでしょうか? 早速やってみます。

<Assembly: AssemblyDescription("説明ですよ" & vbCrLf & _
                                "ほげほげ" & vbCrLf & _
                                "なんやかんや" & vbCrLf & _
                                "あれやこれや")>

複数行といっても文字列としては1つなわけですが、文字列の途中に改行コード(改行定数?) vbCrLf を入れるとそこで表示のときに改行されます。
見やすいように複数行にしていますが(行末に _)、別に1行で書いてもOKです。
実行して表示してみると、こうなりました。


できたよやったー。
念のため、アセンブリ情報も見てみます。


なんかさっき AssemblyInfo.vb で書いたのが、改行コードと継続行記号(_)も含めてそのまま表示されてます。これって、最初からここに改行コード入りの1行で記入すればよかったってことなんじゃ……orz まいっかw

0 件のコメント: