Dadurch, dass ich es mittlerweile immer öfters benötige, und es hier im Forum noch kein passendes Tutorial diesbezüglich gibt,
habe ich mich schnell herangesetzt und rasch ein Tutorial zusammengeschrieben.
Was benötigen Sie?
Grundsätzlich benötigen Sie für dieses Tutorial keine besonderen Komponenten, lediglich ein Control,
welches Sie mit einem Toolbox-Icon erweitern wollen, sowie diverse Basisgrundkenntnisse.
Für dieses Tutorial verwende ich folgendes TestControl:
TestControl anzeigen
Wie funktioniert das Ganze?
Das Ganze zerlege ich nun in Einzelteile.
Was ist zu beachten?
Beim Setzten des Toolbox-Icons sollten Sie folgendes beachten:
Wie binden Sie das Bitmap richtig ein?
Grundsätzlich sehr simpel:
Ziehen Sie das zu verwendende Bitmap einfach in die Projektmappe, beziehungsweise fügen Sie es über Rechtsklick -> Hinzufügen -> Vorhandenes Element einfach hinzu.
Anschließend benennen Sie die Bitmap-Datei genau gleich wie die Klasse, der das Bitmap zugeordnet werden soll.
In unserem Fall: TestControl.bmp
Nun muss noch der Buildvorgang gesetzt werden. Diesen stellen Sie von Inhalt auf
Hinzufügen des Bitmaps zum Control
Nun muss das Bitmap nurnoch dem jeweiligen Control zugeordnet werden. Dies geschieht, wie oben schon erwähnt, mit dem
Dazu gibt es zwei Methoden:
Liegen Bitmap in Klasse im selben NameSpace kann der angegebene String entfernt werden. (
Ist dies nicht der Fall, kann man die Bitmap-Datei so umbenennen, dass der Dateiname dem obergeordneten Namespace entspricht.
Liegt unser TestControl nun zum Beispiel im
Diesbezüglich können Sie sich auch folgenden Thread ansehen: Eigenes ToolboxBitmap in Namespace
Standardicons verwenden
In Visual Studio ist es ebenfalls möglich bereits vorhandene Standardicons zu verwenden.
Möchten Sie zum Beispiel das Button-Icon verwenden, welches von Visual Studio bereitgestellt wird, müssen Sie die ToolboxBitmapAttribute wie folgt definieren:
Transparenz und Kompatibilität
Wenn man eine Bitmap-Datei verwendet, gibt es natürlich keine Transparenz.
Keine Sorge, Visual Studio erledigt dies von ganz alleine.
Weiß (255,255,255) wird automatisch transparent.
Will man nun Icons erstellen, welche mit den verschiedenen Visual Studio Themes kompatibel sind,
sollte man die von VS verwendeten Farben ebenfalls verwenden.
Diese werden ebenfalls automatisch konvertiert.
Ich empfehle deswegen das Betrachten der Visual Studio Image Library:
microsoft.com/en-us/download/details.aspx?id=35825
Das war's!
Schon haben Sie zu Ihrem Steuerelement ein eigenes Icon hinzugefügt!
An dieser Stelle noch zwei hilfreiche Links:
msdn.microsoft.com/de-de/library/4wk1wc0a(v=vs.110).aspx
msdn.microsoft.com/de-de/libra…pattribute(v=vs.110).aspx
Ich hoffe dieses Tutorial konnte Ihnen helfen!
Mit freundlichen Grüßen
Martin Pfeiffer aka. Gather_
habe ich mich schnell herangesetzt und rasch ein Tutorial zusammengeschrieben.
Was benötigen Sie?
Grundsätzlich benötigen Sie für dieses Tutorial keine besonderen Komponenten, lediglich ein Control,
welches Sie mit einem Toolbox-Icon erweitern wollen, sowie diverse Basisgrundkenntnisse.
Für dieses Tutorial verwende ich folgendes TestControl:
VB.NET-Quellcode
- Option Strict On
- Option Explicit On
- Option Infer On
- Imports System.Drawing
- Imports System.ComponentModel
- Imports System.Windows.Forms
- ''' <summary>
- ''' Ein Steuerelement zum Testen des ToolboxBitmaps, auf Basis des Tutorials von Gather.
- ''' Das Tutorial ist auf vb-paradise.de zu finden.
- ''' </summary>
- <DesignerCategory("Code")>
- <Description("Ein Steuerelement zum Testen des ToolboxBitmaps, auf Basis des Tutorials von Gather.")>
- Public Class TestControl : Inherits Control
- #Region " Declarations "
- ''' <summary>
- ''' Farben zur Darstellung des TestControls.
- ''' </summary>
- Private _ControlColors As Color() = {Color.Red, Color.Yellow, Color.Green}
- #End Region
- #Region " Mouse-Hook "
- '
- ' Die Mouse-Hook wird zum Erkennen des aktuellen Mausstatus verwendet.
- '
- ''' <summary>
- ''' Wird für die Angabe des Aktuellen Mausstatus benötigt.
- ''' </summary>
- Private _CurrentState As MouseState = MouseState.None
- ''' <summary>
- ''' Enumweration für den Status der Maus.
- ''' </summary>
- ''' <remarks>Für dieses Tutorial als Integer definiert.</remarks>
- Enum MouseState As Integer
- ''' <summary>
- ''' Die Maus befindet sich nicht über dem Steuerelement.
- ''' </summary>
- None = 0
- ''' <summary>
- ''' Die Maus befindet sich über dem Steuerelement.
- ''' </summary>
- Over = 1
- ''' <summary>
- ''' Die Maus befindet sich, mit gedrückter linker Maustaste, über dem Steuerelement.
- ''' </summary>
- Down = 2
- End Enum
- Protected Overrides Sub OnMouseEnter(e As System.EventArgs)
- _CurrentState = MouseState.Over : Invalidate()
- MyBase.OnMouseEnter(e)
- End Sub
- Protected Overrides Sub OnMouseLeave(e As System.EventArgs)
- _CurrentState = MouseState.None : Invalidate()
- MyBase.OnMouseLeave(e)
- End Sub
- Protected Overrides Sub OnMouseDown(e As System.Windows.Forms.MouseEventArgs)
- _CurrentState = MouseState.Down : Invalidate()
- MyBase.OnMouseDown(e)
- End Sub
- Protected Overrides Sub OnMouseUp(e As System.Windows.Forms.MouseEventArgs)
- _CurrentState = MouseState.Over : Invalidate()
- MyBase.OnMouseUp(e)
- End Sub
- #End Region
- #Region " Drawing "
- Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
- Dim g As Graphics = e.Graphics
- Using p As New Pen(_ControlColors(_CurrentState))
- g.DrawRectangle(p, New Rectangle(0, 0, Width - 1, Height - 1))
- End Using
- Using b As New SolidBrush(ForeColor)
- Using sf As New StringFormat With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}
- g.DrawString("Gathers TestControl", Font, b, ClientRectangle, sf)
- End Using
- End Using
- MyBase.OnPaint(e)
- End Sub
- #End Region
- End Class
Wie funktioniert das Ganze?
Mithilfe von ToolboxBitmapAttribute können Sie eine Zeichenfolge angeben, die den Pfad und den Dateinamen für eine Bitmap von 16 x 16 Pixel angibt. Diese Bitmap wird, nachdem sie der Toolbox hinzugefügt wurde, neben dem Steuerelement angezeigt. Sie können auch einen Type angeben, sodass die diesem Typ zugeordnete Bitmap geladen wird. Wenn Sie sowohl Type als auch eine Zeichenfolge angeben, sucht das Steuerelement in der Assembly, die den vom Type-Parameter angegebenen Typ enthält, nach einer Bildressource mit dem vom Zeichenfolgenparameter angegebenen Namen. (Msdn - 2017)
Das Ganze zerlege ich nun in Einzelteile.
Was ist zu beachten?
Beim Setzten des Toolbox-Icons sollten Sie folgendes beachten:
- Das Icon muss eine Bilddatei vom Typ Bitmap
.bmp
sein. - Die Bittiefe muss 24Bits pro Pixel entsprechen.
- Die Größe des Bitmaps muss 16x16 entsprechen.
Wie binden Sie das Bitmap richtig ein?
Grundsätzlich sehr simpel:
Ziehen Sie das zu verwendende Bitmap einfach in die Projektmappe, beziehungsweise fügen Sie es über Rechtsklick -> Hinzufügen -> Vorhandenes Element einfach hinzu.
Anschließend benennen Sie die Bitmap-Datei genau gleich wie die Klasse, der das Bitmap zugeordnet werden soll.
In unserem Fall: TestControl.bmp
Nun muss noch der Buildvorgang gesetzt werden. Diesen stellen Sie von Inhalt auf
Eingebettete Ressourcen
.Hinzufügen des Bitmaps zum Control
Nun muss das Bitmap nurnoch dem jeweiligen Control zugeordnet werden. Dies geschieht, wie oben schon erwähnt, mit dem
ToolboxBitmapAttribut
.Dazu gibt es zwei Methoden:
- Das Hinzufügen mittels Dateipfad (welches für eine portable Bibliothek unvorteilhaft ist), und das
- Hinzufügen mittels Ressourcen (wie oben erklärt).
VB.NET-Quellcode
- ' Legt das Bitmap, mittels Dateipfad fest.
- <ToolboxBitmap("C:\Documents and Settings\User\Pictures\TestControl.bmp")> _
- Public Class TestControl
- ' Restlicher ControlCode...
- ' Legt einen Typ fest, nachdem in den Ressourcen gesucht wird, sowie der Name nach dem gesucht werden soll.
- <ToolboxBitmap(GetType(TestControl), "TestControl.bmp")> Public Class TestControl
- ' Restlicher ControlCode...
Liegen Bitmap in Klasse im selben NameSpace kann der angegebene String entfernt werden. (
<ToolboxBitmap(GetType(TestControl)>
)Ist dies nicht der Fall, kann man die Bitmap-Datei so umbenennen, dass der Dateiname dem obergeordneten Namespace entspricht.
Liegt unser TestControl nun zum Beispiel im
Namespace Controls
, müssen wir die Bitmap-Datei in Controls.TestControl.bmp
umbennen.Diesbezüglich können Sie sich auch folgenden Thread ansehen: Eigenes ToolboxBitmap in Namespace
Standardicons verwenden
In Visual Studio ist es ebenfalls möglich bereits vorhandene Standardicons zu verwenden.
Möchten Sie zum Beispiel das Button-Icon verwenden, welches von Visual Studio bereitgestellt wird, müssen Sie die ToolboxBitmapAttribute wie folgt definieren:
Transparenz und Kompatibilität
Wenn man eine Bitmap-Datei verwendet, gibt es natürlich keine Transparenz.
Keine Sorge, Visual Studio erledigt dies von ganz alleine.
Weiß (255,255,255) wird automatisch transparent.
Will man nun Icons erstellen, welche mit den verschiedenen Visual Studio Themes kompatibel sind,
sollte man die von VS verwendeten Farben ebenfalls verwenden.
Diese werden ebenfalls automatisch konvertiert.
Ich empfehle deswegen das Betrachten der Visual Studio Image Library:
microsoft.com/en-us/download/details.aspx?id=35825
Das war's!
Schon haben Sie zu Ihrem Steuerelement ein eigenes Icon hinzugefügt!
An dieser Stelle noch zwei hilfreiche Links:
msdn.microsoft.com/de-de/library/4wk1wc0a(v=vs.110).aspx
msdn.microsoft.com/de-de/libra…pattribute(v=vs.110).aspx
Ich hoffe dieses Tutorial konnte Ihnen helfen!
Mit freundlichen Grüßen
Martin Pfeiffer aka. Gather_
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gather“ ()