執筆者: エディフィストラーニング株式会社 矢嶋 聡

動作確認環境: .NET Framework 4, Visual Studio 2010, Windows Vista

更新日: 2010 年 3 月 15 日


ユーザー アカウント制御 (UAC) が有効になっている環境下において、実行中のアプリケーションから別のプロセスを起動するボタンがあるとき、そのプロセスを管理者として起動することを意味する「シールド アイコン」を .NET Framework のクラスライブラリを使用して追加することができます。

このためには、シールド アイコンに相当する SystemIcons クラスの Shield プロパティを使用します。以下に、Windows フォームの起動時に、フォーム上のボタンにシールド アイコンを表示する方法を示します。

Note: .NET Framework 対応アプリケーションにおいて、別のプロセスを管理者として起動する方法は、「.NET Framework 対応アプリケーションから別のプロセスを管理者として起動する」を参照してください。

例 C#

public Form1()
{
InitializeComponent();

button1.Image = new Icon(SystemIcons.Shield, new Size(16, 16)).ToBitmap(); ←[1]
button1.TextImageRelation = TextImageRelation.ImageBeforeText; ←[2]
button1.Text = "タスク..."; ←[3]

}

上記の例は、Visual Studio 2010 で Windows フォーム アプリケーション プロジェクトを作った後、フォーム クラスのコンストラクタの中に [1] から[3] までのコードを追加したものです。

ポイントは [1] の黄色の部分であり、SystemIcon.Shield プロパティがシールド アイコンを表しています。このプロパティ自体 Icon クラスのインスタンスです。ただし、アイコンリソースは複数のサイズのアイコンを含んでおり、ここではボタンサイズに合わせて 16×16 ピクセルのアイコンを使用するため、「New Size (16,16)」とサイズを指定した上で、改めて「New Icon( ... ) 」と記述して Icon オブジェクトを作成しています。

さらに [1] では、ボタン (Button1) のイメージとしてアイコンを指定するため、ボタンの Image プロパティに指定てきるよう Icon オブジェクトの ToBitmap メソッドを呼び出して変換しています。

また、ボタンにはシールド アイコンに続けて右隣りにテキストも表示させるため、 [2] のように TextImageRelation プロパティには、「TextImageRelation.ImageBeforeText」と指定します。実際にテキストとして表示されるのは [3] で指定した「タスク...」です。

フォームを起動すると、次のようにシールド アイコンが表示されます。

図 1. シールド アイコン


Code Recipe Code Recipe

ページのトップへ