none
ToolStripMenuItem RRS feed

  • Frage

  • Hi,

    ich will ein Benutzerbild im Menü anzeigen (so art Passbild).

    Leider richtet sich ja die Höhe aller ToolStripMenuItems nach dem größtem ToolStripMenuItem bzw. wird das Bild entsprechend klein, wenn man autosize verwendet.

    Kann man ein einzelnes ToolStripMenuItem in der Höhe anpassen?

     

    Gruß

    Udo

    Freitag, 8. April 2011 14:42

Antworten

  • Hallo Udo,

    wenn Du die AutoSize Eigenschaft des ToolStripMenuItem auf false setzt, kannst Du über die Height Eigenschaft eine benutzerdefinierte Höhe festlegen, die auch nur für dieses ToolStripMenuItem gültig ist. Alle anderen Einträge behalten ihre ursprüngliche Höhe. Die Grafik, die Du über die Image Eigenschaft zuweist, wird entweder auf die Standardgröße skaliert (ImageScaling = ToolStripItemImageScaling.SizeToFit => Standardeinstellung) oder es wird der Raum für die Grafik für alle Menüeinträge entsprechend angepasst, wenn Du festlegst, dass die Grafik nicht skaliert werden soll.

    Hier kannst Du dann also nicht mit der Image Eigenschaft arbeiten, um ein Icon für diesen Eintrag anzuzeigen, sondern musst den Eintrag selber zeichnen. Hierfür kannst Du das Paint Ereignis des ToolStripMenuItem verwenden. Je nachdem wie aufwändig Deine Anpassungen ausfallen, zeichnest Du den kompletten Eintrag selber oder musst nur dafür sorgen, dass Deine Grafik entsprechend dargestellt, behältst aber die Standarddarstellung. Das Image hierfür kannst Du bspw. über die Tag Eigenschaft vorhalten oder Du erstellst gleich eine eigene Ableitung von ToolStripMenuItem, mit der geänderten Darstellung und einer separaten Eigenschaft für das Image. In dem Fall würdest Du auch die OnPaint Methode überschreiben.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort vorgeschlagen Marcel RomaModerator Montag, 11. April 2011 14:55
    • Als Antwort markiert Posbis_ Montag, 11. April 2011 16:31
    Sonntag, 10. April 2011 20:19
    Beantworter
  • Hallo Udo,

    ja, das wichtigste ist: "AutoSize auf false", die weiteren Einstellungen greifen dann erst.
    Hier auch ein Beispiel-C#-Projekt mit flexiblem Handling:

    [Multiple Image Sizes for ToolStrip Items - CodeProject]
    http://www.codeproject.com/KB/toolbars/multi_image_tooltips.aspx?msg=3144297

     


    ciao Frank
    • Als Antwort markiert Posbis_ Montag, 11. April 2011 16:31
    Montag, 11. April 2011 07:06

Alle Antworten

  • Hallo Udo,

    wenn Du die AutoSize Eigenschaft des ToolStripMenuItem auf false setzt, kannst Du über die Height Eigenschaft eine benutzerdefinierte Höhe festlegen, die auch nur für dieses ToolStripMenuItem gültig ist. Alle anderen Einträge behalten ihre ursprüngliche Höhe. Die Grafik, die Du über die Image Eigenschaft zuweist, wird entweder auf die Standardgröße skaliert (ImageScaling = ToolStripItemImageScaling.SizeToFit => Standardeinstellung) oder es wird der Raum für die Grafik für alle Menüeinträge entsprechend angepasst, wenn Du festlegst, dass die Grafik nicht skaliert werden soll.

    Hier kannst Du dann also nicht mit der Image Eigenschaft arbeiten, um ein Icon für diesen Eintrag anzuzeigen, sondern musst den Eintrag selber zeichnen. Hierfür kannst Du das Paint Ereignis des ToolStripMenuItem verwenden. Je nachdem wie aufwändig Deine Anpassungen ausfallen, zeichnest Du den kompletten Eintrag selber oder musst nur dafür sorgen, dass Deine Grafik entsprechend dargestellt, behältst aber die Standarddarstellung. Das Image hierfür kannst Du bspw. über die Tag Eigenschaft vorhalten oder Du erstellst gleich eine eigene Ableitung von ToolStripMenuItem, mit der geänderten Darstellung und einer separaten Eigenschaft für das Image. In dem Fall würdest Du auch die OnPaint Methode überschreiben.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort vorgeschlagen Marcel RomaModerator Montag, 11. April 2011 14:55
    • Als Antwort markiert Posbis_ Montag, 11. April 2011 16:31
    Sonntag, 10. April 2011 20:19
    Beantworter
  • Hallo Udo,

    ja, das wichtigste ist: "AutoSize auf false", die weiteren Einstellungen greifen dann erst.
    Hier auch ein Beispiel-C#-Projekt mit flexiblem Handling:

    [Multiple Image Sizes for ToolStrip Items - CodeProject]
    http://www.codeproject.com/KB/toolbars/multi_image_tooltips.aspx?msg=3144297

     


    ciao Frank
    • Als Antwort markiert Posbis_ Montag, 11. April 2011 16:31
    Montag, 11. April 2011 07:06
  • Danke euch beiden

     

    Gruß

    udo

    Montag, 11. April 2011 16:41