Können in VB.NET 2003 außer Icons auch GIF/PNG für ownerdrawn Contextmenüs verwendet werden?

Antwort

In **VB.NET 2003** (also .NET Framework 1.1) ist die Unterstützung für Bilder in Menüs standardmäßig auf **Icons** (also `.ico`-Dateien) beschränkt. Das betrifft sowohl normale als auch ownerdrawn-Menüs. Die Standard-API und die Windows Forms-Menüklassen (`MenuItem`, `ContextMenu`) bieten keine direkte Möglichkeit, GIF- oder PNG-Bilder als Menüicons zu verwenden. **ABER:** Wenn du ein **OwnerDraw**-Menü verwendest, hast du die volle Kontrolle über das Zeichnen der Menüeinträge. Das bedeutet, du kannst im `DrawItem`-Event **beliebige Grafiken** zeichnen, also auch PNG oder GIF (inklusive Transparenz). **Vorgehen:** 1. Lade das Bild (PNG, GIF) als `Image`-Objekt (z.B. mit `Image.FromFile`). 2. Im `DrawItem`-Event des Menüeintrags kannst du das Bild mit `e.Graphics.DrawImage` zeichnen. **Beispiel:** ```vb ' Bild laden (z.B. PNG) Dim myImage As Image = Image.FromFile("C:\pfad\bild.png") ' Im DrawItem-Event: Private Sub MenuItem_DrawItem(sender As Object, e As DrawItemEventArgs) ' Bild zeichnen e.Graphics.DrawImage(myImage, e.Bounds.Left, e.Bounds.Top, 16, 16) ' Text daneben zeichnen e.Graphics.DrawString(CType(sender, MenuItem).Text, e.Font, Brushes.Black, e.Bounds.Left + 20, e.Bounds.Top) End Sub ``` **Wichtig:** - Transparenz von PNGs wird unterstützt, GIF-Animationen jedoch nicht (es wird nur das erste Frame angezeigt). - Du musst das OwnerDraw-Flag für den Menüeintrag setzen: `MenuItem.OwnerDraw = True`. **Fazit:** Ja, mit OwnerDraw kannst du in VB.NET 2003 auch PNG- oder GIF-Bilder in ContextMenüs verwenden, aber du musst das Zeichnen selbst übernehmen. Standardmäßig werden nur Icons unterstützt. Weitere Infos zu OwnerDraw-Menüs in .NET findest du z.B. bei Microsoft: [https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.menuitem.ownerdraw](https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.menuitem.ownerdraw)

Frage stellen und sofort Antwort erhalten

Verwandte Fragen

Wie kann ich in VB.NET 2003 einem Contextmenü Icons hinzufügen?

In **VB.NET 2003** (Visual Studio .NET 2003) gibt es für das Standard-`ContextMenu`-Steuerelement keine direkte Unterstützung für Icons neben den Menüeinträgen. Das Hinzuf&uum... [mehr]

Wie kann ich in VB.NET 2003 den Index eines ausgewählten Contextmenü-Items ermitteln?

In VB.NET 2003 kannst du den Index eines gewählten ContextMenu-Items herausfinden, indem du im Event-Handler (z.B. für das Click-Ereignis) das `MenuItem`-Objekt mit der `IndexOf`-Methode in... [mehr]

Wie kann ich in VB.NET 2003 einem per Code angezeigten Kontextmenü den Fokus geben?

In VB.NET 2003 gibt es keine direkte Methode, einem ContextMenu explizit den Fokus zu geben, da das `ContextMenu`-Steuerelement (im Gegensatz zu neueren `ContextMenuStrip`) kein eigenständiges St... [mehr]

Welchen Einfluss haben überflüssig importierte Klassen mittels Imports in VB.NET 2003 auf ein Programm?

In VB.NET 2003 (also .NET Framework 1.1) hat das Hinzufügen von Imports-Anweisungen für nicht verwendete Namespaces oder Klassen in der Regel **keinen nennenswerten Einfluss auf die Grö... [mehr]

"if shinfo.hicon <> IntPtr.Zero Then ..." verursacht in VB.NET 2003 einen Fehler?

Ja, in **VB.NET 2003** kann folgender Vergleich zu einem Fehler führen: ```vb If shinfo.hIcon <> IntPtr.Zero Then ' ... End If ``` **Grund:** In VB.NET 2003 (also .NET Framewor... [mehr]

Wie speichere ich in VB.NET 2003 ein mit SHGetFileInfo extrahiertes Icon unter einem anderen Namen?

Um ein mit `SHGetFileInfo` extrahiertes Icon in VB.NET 2003 unter einem anderen Namen zu speichern, gehst du wie folgt vor: 1. **Icon extrahieren:** Mit `SHGetFileInfo` erhältst du einen Handle... [mehr]

Wie kann ich in VB.NET 2003 den Fehler 'Der Vorgang "read" konnte nicht auf dem Speicher...' abfangen?

Der Fehler „Der Vorgang 'read' konnte nicht auf dem Speicher...“ ist kein typischer .NET-Fehler, sondern ein Zugriffsverletzungsfehler (Access Violation), der meist auftritt, wen... [mehr]

Welchen Datentyp hat der Wert für PictureBox.SizeMode in VB.NET 2003?

Der Wert für die Eigenschaft `PictureBox.SizeMode` in VB.NET 2003 hat den Datentyp [`PictureBoxSizeMode`](https://learn.microsoft.com/de-de/dotnet/api/system.windows.forms.pictureboxsizemode?view... [mehr]

Wie lade ich mit VB.NET 2003 ein Icon als Image in eine PictureBox?

Um in VB.NET 2003 ein Icon (.ico-Datei) in eine PictureBox als Image anzuzeigen, musst du das Icon zunächst in ein Bitmap-Objekt umwandeln, da die PictureBox kein Icon direkt anzeigen kann, sonde... [mehr]

Warum funktioniert die InitialDirectory-Einstellung im OpenFileDialog unter VB.NET 2003 nicht?

In VB.NET 2003 (also .NET Framework 1.1) gibt es beim `OpenFileDialog`-Steuerelement tatsächlich einige bekannte Einschränkungen und Eigenheiten bezüglich der `InitialDirectory`-Eigensc... [mehr]