ツールボックスでコントロールのアイコンを設定する (Windows フォーム .NET)
作成したコントロールには、Visual Studio の [ツールボックス] ウィンドウの汎用アイコンが常に表示されます。 ただし、アイコンを変更すると、コントロールにプロフェッショナル感が加わり、ツールボックス内で目立つようになります。 この記事では、コントロールのアイコンを設定する方法について説明します。
ビットマップ アイコン
Visual Studio の [ツールボックス] ウィンドウのアイコンは、特定の標準に準拠する必要があります。そうしないと、無視されるか、正しく表示されません。
- サイズ: コントロールのアイコンは、16 x 16 ビットマップ画像にする必要があります。
- ファイルの種類: アイコンには、ビットマップ (.bmp) または Windows アイコン (.ico) ファイルのいずれかを指定できます。
- 透明度: マゼンタ色 (RGB:
255,0,255
、16 進数:0xFF00FF
) が透過してレンダリングされます。 - テーマ: Visual Studio には複数のテーマがありますが、各テーマは濃色または淡色と見なされます。 アイコンは淡色テーマ用にデザインする必要があります。 Visual Studio で濃色テーマが使われている場合、アイコンの濃色と淡色は自動的に反転されます。
アイコンを割り当てる方法
アイコンは、ToolboxBitmapAttribute 属性を持つコントロールに割り当てられます。 属性の詳細については、「属性 (C#)」または「属性の概要 (Visual Basic)」を参照してください。
ヒント
サンプル アイコンを GitHub からダウンロードできます。
この属性はコントロールのクラスに設定され、3 種類のコンストラクターがあります。
ToolboxBitmapAttribute(Type) - このコンストラクターは単一の型参照を受け取り、その型からアイコンとして使う埋め込みリソースを見つけようとします。
その型の FullName は、
{project-name}.{namespace-path}.{type-name}{.bmp|.ico}
の形式で、その型のアセンブリ内の埋め込みリソースの検索に使用されます。 たとえば、MyProject.MyNamespace.CompassRose
型が参照されている場合、属性はMyProject.MyNamespace.CompassRose.bmp
またはMyProject.MyNamespace.CompassRose.ico
という名前の埋め込みリソースを検索します。// Looks for a CompassRose.bmp or CompassRose.ico embedded resource in the // same namespace as the CompassRose type. [ToolboxBitmap(typeof(CompassRose))] public partial class CompassRose : UserControl { // Code for the control }
' Looks for a CompassRose.bmp or CompassRose.ico embedded resource in the ' same namespace as the CompassRose type. <ToolboxBitmap(GetType(CompassRose))> Public Class CompassRose ' Code for the control End Class
ToolboxBitmapAttribute(Type, String) - このコンストラクターは 2 つのパラメーターを受け取ります。 最初のパラメーターは型であり、2 つ目のパラメーターはその型のアセンブリ内の埋め込みリソースの名前空間と名前です。
// Loads the icon from the WinFormsApp1.Resources.CompassRose.bmp resource // in the assembly containing the type CompassRose [ToolboxBitmap(typeof(CompassRose), "WinFormsApp1.Resources.CompassRose.bmp")] public partial class CompassRose : UserControl { // Code for the control }
' Loads the icon from the WinFormsApp1.Resources.CompassRose.bmp resource ' in the assembly containing the type CompassRose <ToolboxBitmap(GetType(CompassRose), "WinFormsApp1.Resources.CompassRose.bmp")> Public Class CompassRose ' Code for the control End Class
ToolboxBitmapAttribute(String) - このコンストラクターは、アイコン ファイルへの絶対パスという 1 つの文字列パラメーターを受け取ります。
// Loads the icon from a file on disk [ToolboxBitmap(@"C:\Files\Resources\MyIcon.bmp")] public partial class CompassRose : UserControl { // Code for the control }
' Loads the icon from a file on disk <ToolboxBitmap("C:\Files\Resources\MyIcon.bmp")> Public Class CompassRose ' Code for the control End Class
.NET Desktop feedback