Die Community zu .NET und Classic VB.
Menü

VB.NET-Tipp 0106: CheckMenu

 von 

Beschreibung

System.Windows.Forms.ToolStripMenuItem hat die recht nützlichen Eigenschaften einer Checkbox. Wenn es auf oberster Menu-Ebene angeordnet ist, jedoch leider nicht. Dieser Tipp implementiert einen ToolStripMenuItem-Erben, der bei Klicks sein Bild wechselt. Anwendung: Nachdem man das Projekt erstellt hat, fügt man seinem Menustrip ein Checkmenu hinzu, indem man den Dropdown neben "hier eingeben" betätigt.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Framework-Version(en):

.NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5

.NET-Version(en):

Visual Basic 2005, Visual Basic 2008

Download:

Download des Beispielprojektes [15,02 KB]

' Dieser Quellcode stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.

' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!

' Projektversion:   Visual Studio 2005
' Option Strict:    An
'
' Referenzen: 
'  - System
'  - System.Data
'  - System.Drawing
'  - System.Windows.Forms
'  - System.Xml
'
' Imports: 
'  - Microsoft.VisualBasic
'  - Microsoft.VisualBasic.ControlChars
'  - System
'  - System.Collections
'  - System.Collections.Generic
'  - System.Data
'  - System.Drawing
'  - System.Diagnostics
'  - System.Windows.Forms
'

' ##############################################################################
' ############################### CheckMenu.vb #################################
' ##############################################################################
Imports System.ComponentModel

<DefaultEvent("CheckedChanged")> _
Public Class CheckMenu : Inherits ToolStripMenuItem

    ' Shared Images: alle CheckMenu-Objekte greifen auf **dieselben** Images 
    '  zu, anstatt sich je eigene zu erzeugen
    Private Shared _Images As Image()

    Shared Sub New()
        ' Untiger ComponentResourceManager arbeitet auf der lokalen Ressource 
        '  "Checkmenu.resx". Um eine lokale Ressource-Datei zu erzeugen muss 
        '  zunächst von Component geerbt werden (hier: mittelbar über 
        '  ToolStripMenuItem). Dann in die Designer-Ansicht von CheckMenu 
        '  gehen, ein beliebiges Item aus der Toolbox hinzufügen, und wieder 
        '  löschen. Im Projekt-Explorer "Alle Dateien anzeigen" aktivieren, 
        '  CheckMenu-Knoten erweitern, und Checkmenu.resx mit Doppelklick 
        '  öffnen. Jetzt können Bilder zugefügt werden. Sinn der lokalen 
        '  Bildressource ist, daß CheckMenu seine Bilder "mitnimmt", wenn es 
        '  in andere Projekte kopiert wird.
        With New ComponentResourceManager(GetType(CheckMenu))
            _Images = New Image() {CType(.GetObject("UnChecked"), Image), _
                CType(.GetObject("Checked"), Image)}
        End With
    End Sub

    Public Sub New()
        MyBase.New()
        Me.Image = _Images(0)
        MyBase.CheckOnClick = True
    End Sub

    Protected Overrides Sub OnCheckedChanged(ByVal e As System.EventArgs)
        MyBase.OnCheckedChanged(e)
        Me.Image = _Images(-CInt(MyBase.Checked))
    End Sub

End Class

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.