vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: kontextmenü 
Autor: Snof
Datum: 22.12.03 00:29

Imports System
Imports System.Drawing
Imports System.Windows.Forms

Public Class BMPMenu
Inherits MenuItem

Protected frmParentForm As Form
Protected MaxMenuTextBreite As Short

Protected imgMenuImage As Image

Sub New(ByRef ParentForm As Form)
MyBase.New()
MyBase.OwnerDraw = True
frmParentForm = ParentForm
End Sub

Sub New(ByRef ParentForm As Form, ByVal Image As Image)
MyBase.New()
MyBase.OwnerDraw = True
imgMenuImage = Image
frmParentForm = ParentForm
End Sub

Public Shadows ReadOnly Property OwnerDraw() As Boolean
Get
Return True
End Get
End Property

Public ReadOnly Property ParentForm() As Form
Get
Return frmParentForm
End Get
End Property

Public Property Image() As Image
Get
Return imgMenuImage
End Get
Set(ByVal Value As Image)
imgMenuImage = Value
End Set
End Property

Private Sub BMPMenu_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles MyBase.DrawItem

'Rechteck für die Ausgabefläche definieren, das etwas kleiner ist als
'die Fläche des Menüs

Dim TextGrenzen As New RectangleF(e.Bounds.Left + 24, e.Bounds.Top + 2, e.Bounds.Right, e.Bounds.Bottom - 2)
Dim MenuTextFormat As New StringFormat()
Dim TextFarbe As Color = SystemColors.MenuText

'Erster Tabstop bereits beim 0.ten Zeichen
Dim TabStops() As Single = {0}

'Nr. des anzuzeigenden Bilds aus der Imagelist
Dim inBildNr As Integer

'Auszugebenden Text aufbereiten
With MenuTextFormat
.SetTabStops(MaxMenuTextBreite, TabStops)
.HotkeyPrefix = Drawing.Text.HotkeyPrefix.Show
End With

Dim MenuSelected As Boolean

'Feststellen, ob Eintrag selektiert ist
MenuSelected = (e.State And DrawItemState.Selected) = DrawItemState.Selected

'Wenn ja, dann anderen Hintergrund und Textfarbe anzeigen
If MenuSelected = True Then
e.DrawBackground()
TextFarbe = SystemColors.HighlightText
Else
e.Graphics.FillRectangle(SystemBrushes.Menu, e.Bounds)
End If

'Bitmap nur zeichnen, wenn Menüeintrag BildNr besitzt
If Not (imgMenuImage Is Nothing) Then
'Bitmap in ihrer ursprünglichen Größe anzeigen
e.Graphics.DrawImageUnscaled(imgMenuImage, _
e.Bounds.Left + 1, e.Bounds.Top + 1)
End If

'Zum Schlus auch den Text im Menü "zeichnen"
e.Graphics.DrawString(Me.Text, Me.frmParentForm.Font, _
New SolidBrush(TextFarbe), TextGrenzen, MenuTextFormat)

End Sub

Private Sub BMPMenu_MeasureItem(ByVal sender As Object, ByVal e As System.Windows.Forms.MeasureItemEventArgs) Handles MyBase.MeasureItem

'Größe des Menütextes
Dim TextGröße As Size

'StringFormat kümmert sich um die Formatierung auf "Grafikebene"
Dim TextFormat As New StringFormat()

'Menüshortcuts sollen angezeigt werden
TextFormat.HotkeyPrefix = Drawing.Text.HotkeyPrefix.Show

'Textgröße des Menütextes feststellen
TextGröße = e.Graphics.MeasureString(Me.Text, New Font("Microsoft Sans Serif", 10)).ToSize

'Maximale Breite eines Menüeintrags feststellen
MaxMenuTextBreite = Math.Max(MaxMenuTextBreite, TextGröße.Width + 24)

'Maximale Höhe eines Menüeintrags festlegen
e.ItemHeight = Math.Max(TextGröße.Height + 2, SystemInformation.SmallIconSize.Height + 2)

'Breite festlegen
e.ItemWidth = MaxMenuTextBreite
End Sub


End Class


demn?chst Online: SnofWare.de
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
kontextmenü1.096[CrX].:HappyHer...21.12.03 21:30
Re: kontextmenü821WaldiMaywood22.12.03 00:25
Re: kontextmenü806Snof22.12.03 00:29
ARRR... Was vergessen785Snof22.12.03 00:32
Re: Kontextmenü640[CrX].:HappyHer...22.12.03 01:13
Re: Kontextmenü674WaldiMaywood22.12.03 01:22
Re: Kontextmenü648[CrX].:HappyHer...23.12.03 17:58
Re: Kontextmenü678Snof24.12.03 02:11

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel