none
ToolboxBitmapAttribute.GetImageFromResource-Methode RRS feed

  • Frage

  • Hallo zusammn,

    Ich habe es nun geschaft ein eigenes Control (Button) zu erstellen. Mit allen was ich wollte.
    Jetzt fehlt mir noch eins.
    Das eigen erstellte Control soll ja später in der ToolBox auch ein eigenes Icon haben.
    Nun habe ich ein Bild im Format 16x16 als bmp erstellt. so wie es auch in der Beschreibung steht.
    füge ich nun vor de Klasse folgendes ein:
    <ToolboxBitmap("C:\test.bmp")>
    funktioniert es einwandfrei.

    Ich möchte das BMP aber nicht so einfach auf der Platte liegen haben, sondern ich würde es gerne auss den Ressourcen holen.
    Und genau da scheitert mein vorhaben. Ich habe mir die Klasse bei msdn und auch Beispiel bei Gallileo angesehen, und schaffe trotzdem nicht.
    Weis jemand wie der Konstruktor aufgebaut sein muss ?

    Das funktioniert leider nicht:

    <System.Drawing.ToolboxBitmap(GetType(System.Windows.Forms.Button), My.Resources.BS_CB_Rund16x16)>

     

    vielen dank wie immer

    Bernd

    Montag, 5. April 2010 07:04

Antworten

  • Hallo Bernd,

    das ToolboxBitmap Attribut erwartet hier eine eingebettete Ressource. Die Ressourcen, die Du über den Designer der Projekt-Eigenschaften erstellst, sind zwar auch eingebettet, aber wieder in einem speziellen Container Format (RESX). Ferner wird ein Verweis auf eine Klasse innerhalb Deines Projekts/Assembly erwartet, da dies ausschlaggebend dafür ist, wo das Bitmap gesucht wird:

    1. Füge das Bitmap über Projekt => Bestehenden Eintrag hinzufügen in Deine Projektmappe ein. Ggf. direkt in den Ordner "Resources".

    2. Wähle im Eigenschaftenfenster dieses hinzugefügten Bitmap unter "Build Action" (Erstellungsaktion) [Embedded Resource] (Eingebettete Ressource) aus.

    3. Passe das ToolboxBitmap Attribut an:

    <ToolboxBitmap(GetType(MyCustomButton), "CustomButton.bmp")> _
    Public Class MyCustomButton
      ' ...
    End Class

    Wenn Du dem Bitmap den gleichen Namen gibst, wie Deine Klasse/Control, dann kannst Du auch auf die Angabe des Namens verzichten.

    Es kann sehr wahrscheinlich sein, dass Visual Studio in seiner Toolbox immer noch das Standard Icon anzeigt und nicht Dein eigenes. Warum das so ist und sein muss, habe ich bisher noch nicht raus gefunden. Bindet man das Assembly in einer anderen Projektmappe ein, wird erwartungsgemäß das eigene Icon angezeigt.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    Montag, 5. April 2010 10:56
    Moderator

Alle Antworten

  • Hallo Bernd,

    das ToolboxBitmap Attribut erwartet hier eine eingebettete Ressource. Die Ressourcen, die Du über den Designer der Projekt-Eigenschaften erstellst, sind zwar auch eingebettet, aber wieder in einem speziellen Container Format (RESX). Ferner wird ein Verweis auf eine Klasse innerhalb Deines Projekts/Assembly erwartet, da dies ausschlaggebend dafür ist, wo das Bitmap gesucht wird:

    1. Füge das Bitmap über Projekt => Bestehenden Eintrag hinzufügen in Deine Projektmappe ein. Ggf. direkt in den Ordner "Resources".

    2. Wähle im Eigenschaftenfenster dieses hinzugefügten Bitmap unter "Build Action" (Erstellungsaktion) [Embedded Resource] (Eingebettete Ressource) aus.

    3. Passe das ToolboxBitmap Attribut an:

    <ToolboxBitmap(GetType(MyCustomButton), "CustomButton.bmp")> _
    Public Class MyCustomButton
      ' ...
    End Class

    Wenn Du dem Bitmap den gleichen Namen gibst, wie Deine Klasse/Control, dann kannst Du auch auf die Angabe des Namens verzichten.

    Es kann sehr wahrscheinlich sein, dass Visual Studio in seiner Toolbox immer noch das Standard Icon anzeigt und nicht Dein eigenes. Warum das so ist und sein muss, habe ich bisher noch nicht raus gefunden. Bindet man das Assembly in einer anderen Projektmappe ein, wird erwartungsgemäß das eigene Icon angezeigt.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    Montag, 5. April 2010 10:56
    Moderator
  • Ok,

    ich hatte die msdn beschreibung gelesen und auch gefunden das das bmp nich größer als 16 x 16 sein darf

    das habe ich aber nicht gefunden.

    vielen dank

    bernd

    Montag, 5. April 2010 11:31
  • Ok,

    ich hatte die msdn beschreibung gelesen und auch gefunden das das bmp nich größer als 16 x 16 sein darf

    das habe ich aber nicht gefunden.

    vielen dank

    bernd

    Montag, 5. April 2010 11:31